Comment mettre à jour la liste lorsque je clique sur le bouton?
public class MainActivity extends Activity {
ListView list;
String[] abc={"1","2","3"};
MyCustomAdapter adapter;
Button refresh;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
list=(ListView) findViewById(R.id.list);
refresh=(Button) findViewById(R.id.refresh);
adapter=new MyCustomAdapter(MainActivity.this,abc);
list.setAdapter(adapter);
}
private class MyCustomAdapter extends BaseAdapter {
private final Context context;
private ArrayList mData = new ArrayList();
private LayoutInflater mInflater;
private String[] hashmap;
ViewHolder holder = null;
public MyCustomAdapter(Context context,String[] hashMaps) {
super();
this.context = context;
this.hashmap = hashMaps;
mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
return hashmap.length;
}
public Object getItem(int position) {
return hashmap.length;
}
public long getItemId(int position) {
return position;
}
@Override
public void notifyDataSetChanged() //Create this function in your adapter class
{
super.notifyDataSetChanged();
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
System.out.println("getView " + position + " " + convertView);
//final ViewHolder holder = null;
if (convertView == null) {
convertView = mInflater.inflate(R.layout.view1, null);
holder = new ViewHolder();
holder.textView = (TextView)convertView.findViewById(R.id.text);
holder.btn = (Button)convertView.findViewById(R.id.refresh);
convertView.setTag(holder);
} else {
holder = (ViewHolder)convertView.getTag();
}
holder.textView.setText(hashmap[position]);
holder.btn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
RelativeLayout rl = (RelativeLayout)v.getParent();
holder.textView = (TextView)rl.getChildAt(position);
Log.i("position",String.valueOf(position));
holder.textView.setText("10");
}
});
return convertView;
}
}
public static class ViewHolder {
public TextView textView;
public Button btn;
}
}
View.xml
<RelativeLayout xmlns: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:id="@+id/real"
>
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:text="Text"
android:layout_marginTop="15dp"
android:layout_marginLeft="20dp"
/>
<Button
android:id="@+id/refresh"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/text"
android:text="button"
android:layout_marginLeft="20dp"
/>
</RelativeLayout>
Ici dans mon ListView,quand je clique sur le bouton, la valeur n'est pas modifiée à l'intérieur de mon adaptateur en vue.comment résoudre ce problème? la liste contient 3 valeurs de chaque position.alors, quand je clique sur le bouton à l'endroit où vous avez cliqué,la valeur va être le changement au lieu de l'ancienne valeur.
regarde ce stackoverflow.com/a/8309715/779408
OriginalL'auteur Rajesh Lawrance | 2013-01-30
Vous devez vous connecter pour publier un commentaire.
Changement de méthode getView code comme ci-dessous.
OriginalL'auteur user1621629
essayez ceci :
OriginalL'auteur Anand
appel de cette
Pour plus d'info essayez cette lien
OriginalL'auteur Janmejoy
Pour la mise à jour des valeurs listview vous pouvez utiliser
adapter.notifyDataSetChanged()
cela actualiser votre liste de carte. Mais l'appelle après un changement de valeur dans votre source de données.OriginalL'auteur Akhilesh Mani
Vous devez utiliser notifyDataSetChanged () méthode pour actualiser votre liste...
Appel notifyDataSetChanged() sur votre Carte
Veuillez vérifier que j'ai mis à jour ma réponse.
OriginalL'auteur GrIsHu