Skip to content Skip to sidebar Skip to footer

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"