Ich habe einen Service und eine Aktivität in meiner Anwendung. Der Dienst erwirbt eine Zeichenfolge durch die Aktion des Benutzers und diese Zeichenfolge wird an die Aktivität übergeben. Hier erhalte ich den Stringwert für die Aktivität erfolgreich und zeigt ihn auf dem Aktivitätsbildschirm an.Anzeige String-Daten in ListView als String Wert ändert sich jeden Yime
Ich habe eine Listview in Aktivität und die String-Werte sollten in dieser Liste geordnet angezeigt werden. Mein Problem ist, dass ich nur ein Element in der Listenansicht anzeigen kann, die gerade eingegeben wurde. Die zuvor eingegebenen Zeichenfolgen werden nicht angezeigt.
Also jedes Mal, wenn ich Zeichenfolge vom Dienst abrufen muss und diese Zeichenfolge in ListView zusammen mit vorherigen Listenelementen angezeigt werden sollte. Bitte helfen Sie mir .. danke.
Meine Tätigkeit ist ...
public class MainActivity extends AppCompatActivity {
String pichi;
SharedPreferences pref=null;
ListView list;
private ArrayList<String> strArray;
int i;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list=(ListView)findViewById(R.id.offlineList);
pref= PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
pichi=pref.getString("KEY","default");
strArray=new ArrayList<String>();
if (strArray.contains(pichi)){
Toast.makeText(getApplicationContext(),"Link already exists",Toast.LENGTH_LONG).show();
}else {
int count = list.getCount();
for (i = 0; i < count; i++) {
strArray.add("Row" + i);
}
final ArrayAdapter<String> adapter = new ArrayAdapter<String>
(MainActivity.this, android.R.layout.simple_list_item_1, strArray);
if (!list.equals(i)) {
strArray.add(pichi);
adapter.notifyDataSetChanged();
}
list.setAdapter(adapter);
}
}
public void startService(View view) {
startService(new Intent(MainActivity.this, CheckService.class));
}
}
wo Startservice (Ansicht Ansicht) gedrückt wird eine Aktion der Taste.
Mein Service ist ....
public class CheckService extends Service {
public CheckService() {
}
@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw new UnsupportedOperationException("Not yet implemented");
}
String a;
Intent dialogIntent;
public void onCreate() {
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.i("LocalService", "Received Start id" + startId + ":" + intent);
final ClipboardManager clipboard = (ClipboardManager) this.getSystemService(Context.CLIPBOARD_SERVICE);
clipboard.addPrimaryClipChangedListener(new ClipboardManager.OnPrimaryClipChangedListener() {
public void onPrimaryClipChanged() {
a = clipboard.getText().toString();
if (Patterns.WEB_URL.matcher(a).matches()){
dialogIntent = new Intent(CheckService.this, DialogActivity.class);
dialogIntent.putExtra("text",a);
dialogIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(dialogIntent);
}
else if (!URLUtil.isValidUrl(a)){
// Toast.makeText(CheckService.this, "text is not a url link", Toast.LENGTH_LONG).show();
}
}
});
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onStart(Intent intent, int startId) {
// Perform your long running operations here.
// Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
}
@Override
public void onDestroy() {
Toast.makeText(this, "Service Destroyed", Toast.LENGTH_LONG).show();
stopService(dialogIntent);
}
}
Im Dienst i einen Alarm-Dialog haben, von wo aus ich den String-Wert bekommen kann ...
My Dialog Aktivität ist .....
public class DialogActivity extends Activity{
AlertDialog alert;
String receivedText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle=getIntent().getExtras();
receivedText=bundle.getString("text","default");
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder
.setTitle("yoLobee")
.setMessage("save to yoLobee offline..?")
.setIcon(R.drawable.logo)
.setCancelable(true)
.setNeutralButton("SHARE", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT, receivedText);
sendIntent.setType("text/plain");
startActivity(Intent.createChooser(sendIntent,receivedText));
}
})
.setNegativeButton("NO", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
alert.dismiss();
alert.dismiss();
builder.setCancelable(true);
}
})
.setPositiveButton("YES", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
Toast.makeText(DialogActivity.this, "Link saved to yoLobee..", Toast.LENGTH_LONG).show();
SharedPreferences pref= PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
SharedPreferences.Editor edit = pref.edit();
edit.putString("KEY",receivedText);
edit.commit();
// edit.apply();
}
});
alert = builder.create();
alert.setCanceledOnTouchOutside(true);
setFinishOnTouchOutside(true);
alert.setCancelable(true);
alert.show();
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.copyFrom(alert.getWindow().getAttributes());
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.WRAP_CONTENT;
Window window = alert.getWindow();
WindowManager.LayoutParams wlp = window.getAttributes();
wlp.gravity = Gravity.TOP;
wlp.flags &= ~WindowManager.LayoutParams.FLAG_DIM_BEHIND;
window.setAttributes(wlp);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_DOWN) {
alert.cancel();
alert.dismiss();
}
return super.onKeyDown(keyCode, event);
}
@Override
public void onBackPressed() {
super.onBackPressed();
alert.cancel();
alert.dismiss();
}
}
Also von der Dialogaktivität bekomme ich den Stringwert und zeige in der Liste an. Die Liste zeigt nur den letzten Zeichenfolgenwert aus dem Dienst an, da sie jeweils einen Wert erhält. Ich möchte, dass die Liste eine Liste von Strings anzeigt, die vom Service zurückgeliefert werden.
bitte posten Sie Ihren Adapter-Code ... – Kushan
Ich habe keinen Adapter-Code ... Ich verwende Array-Adapter als Adapter, um Elemente in Listview anzuzeigen. Da ich denke, dass der Adapter Array-Daten in der Liste anzeigen soll, müssen die Array-Daten gut funktionieren. –
Ich habe nicht viel Wissen darüber, wenn es irgendwelche Änderungen gibt, die ich gemacht werden muss, plz suggerieren Sie mich. –