问题
I want to change the value of listItem when that listItem is clicked. I have provided the code below.
public class MyListDialogExampleActivity extends Activity implements OnItemClickListener {
ListView myListView;
String itemString = null;
String [] listViewArray = new String[] {"ABC", "DEF", "GHI", "JKL"};
MyArrayAdapter listAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myListView = (ListView) findViewById (R.id.myListView);
listAdapter = new MyArrayAdapter(this, R.layout.list_row, R.id.list_tv, listViewArray);
myListView.setAdapter(listAdapter);
myListView.setOnItemClickListener(this);
}
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
Log.d("onItemClick", arg2+"");
String str = showListDialog();
// i want to change the selected list item with String str
}
public String showListDialog () {
final CharSequence[] items = {"1", "2", "3", "4"};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Pick a number");
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
itemString = items[item].toString();
}
});
AlertDialog alert = builder.create();
alert.show();
return itemString;
}
}
回答1:
you need to use the parameters sent to you on the onItemClick , so that you take the i-th element in the array you've used , change its value , and in the end , notify the adapter that the data has changed by using notifyDatasetChanged.
回答2:
You can't change arrays during runtime
So you have to use List (http://developer.android.com/reference/java/util/List.html)
来源:https://stackoverflow.com/questions/11807029/change-value-of-listitem-onitemclick