Listview Refresh In Android
I have a main activity with a ListView. I then have a second activity with a text box for the user input and a button. When the user enters the input and clicks on the button, it s
Solution 1:
Create an adapter classfor your listView.
classMyAdapterextendsBaseAdapter {
ArrayList<Item> items;
// Override all other needed methods.//Add method to add items to list from outside.publicvoidaddItems(Item item) {
items.add(item);
adapter.notifyDataSetChanged();
}
}
Inside your activity // Crate MyAdapter instance an assign to listview like-
listView,setAdapter(adapter);
Item item= newItem();
//Add necessary properties in item. and add item to list.
adapter.addItem(item);
This is the overall idea . Look around this. Should work.
Solution 2:
Your second activity B, can't see your data resource in activity a, therefore, when you add new item in activity B you must notify activity A
that a change has occurred. This you can obtain using broadcastreceive. When you add a item in activity B sendBroadcastreceive to activity A. Activity A receive the change add it to dataresource and only after notify your adapter.
See the example below. it work!
MainActivity.java
publicclassMainActivityextendsAppCompatActivity {
static String[] bike = newString[]{
"Ducati", "Honda", "BMW", "Bimota", "Kawasaky", "Yahamaha", "Suzuky", "Harlay-Davinson",
"Fantic", "Morini", "Hasquarna", "Aprilia", "Guzzi", "Beta", "Borile", "Buell", "Kymco", "Ktm"
};
ArrayList<String> alBike = newArrayList<>(Arrays.asList(bike));
private ArrayAdapter adapter ;
@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListViewlistView= (ListView) findViewById(R.id.listView);
Buttonbutton= (Button) findViewById(R.id.button2);
adapter = newmyadapter(getBaseContext(),0);
listView.setAdapter(adapter);
IntentFilterintentFilter=newIntentFilter();
intentFilter.addAction("ITEM_ADDED");
BroadcastReceiverbroadcastReceiver=newBroadcastReceiver() {
@OverridepublicvoidonReceive(Context context, Intent intent) {
Stringaction= intent.getAction();
// Log.i("bogo",action);switch (action) {
case"ITEM_ADDED":
Stringnewitem= intent.getStringExtra("newitem");
alBike.add(newitem);
adapter.notifyDataSetChanged();
break;
}
}
};
registerReceiver(broadcastReceiver, intentFilter);
button.setOnClickListener(newView.OnClickListener() {
@OverridepublicvoidonClick(View v) {
startActivity(newIntent(getApplicationContext(),FormActivity.class));
}
});
}
publicclassmyadapterextendsArrayAdapter<String> {
publicmyadapter(Context context, int resource) {
super(context, resource);
}
@OverridepublicintgetCount() {
return alBike.size();
}
@OverridepubliclonggetItemId(int position) {
return0;
}
@Overridepublic View getView(int position, View convertView, ViewGroup parent) {
LayoutInflaterinflater= (LayoutInflater) getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
Viewrow= inflater.inflate(R.layout.listviewrow, parent, false);
TextViewtextView= (TextView) row.findViewById(R.id.textView);
textView.setText(alBike.get(position));
return row;
}
}
}
main_activity.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="bogo.com.additemtolistview.MainActivity"><Buttonstyle="?android:attr/buttonStyleSmall"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="new item"android:id="@+id/button2"android:layout_above="@+id/listView"android:layout_alignParentEnd="true"android:layout_marginEnd="198dp" /><ListViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/listView"android:layout_alignParentEnd="true"android:layout_alignParentTop="true" /></LinearLayout>
FormActivity.java (YOUR ACTIVITY B)
package bogo.com.additemtolistview;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.Editable;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
publicclassFormActivityextendsAppCompatActivity {
@OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_form);
Buttonbutton= (Button) findViewById(R.id.button);
button.setOnClickListener(newView.OnClickListener() {
@OverridepublicvoidonClick(View v) {
EditTexteditText= (EditText) findViewById(R.id.editText);
Stringnewitem= editText.getText().toString();
Intentintent=newIntent("ITEM_ADDED");
intent.putExtra("newitem",newitem);
sendBroadcast(intent);
finish();
}
});
}
}
activity_form.xml
<?xml version="1.0" encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="bogo.com.additemtolistview.FormActivity"><EditTextandroid:layout_width="220dp"android:layout_height="wrap_content"android:id="@+id/editText"android:layout_alignParentTop="true"android:layout_alignParentStart="true"android:layout_marginStart="78dp"android:layout_marginTop="60dp" /><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="New Button"android:id="@+id/button"android:layout_centerVertical="true"android:layout_alignStart="@+id/editText" /></RelativeLayout>
listviewrow.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><LinearLayoutandroid:orientation="horizontal"android:layout_width="match_parent"android:layout_height="48dp"><TextViewandroid:layout_width="match_parent"android:layout_height="wrap_content"android:text="New Text"android:textColor="@android:color/black"android:id="@+id/textView" /></LinearLayout></LinearLayout>
Post a Comment for "Listview Refresh In Android"