-1

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;

}    
  }
Akshay
  • 2,452
  • 3
  • 33
  • 51
Homam
  • 4,800
  • 4
  • 32
  • 39

2 Answers2

1

You can't change arrays during runtime

So you have to use List (http://developer.android.com/reference/java/util/List.html)

Alexander Fuchs
  • 1,338
  • 3
  • 17
  • 35
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.

android developer
  • 106,412
  • 122
  • 641
  • 1,128
  • Thanks a lot for your useful answer. I got it working. I changed showListDialog(); to showListDialog(arg2); to pass the position of my selected listItem to showListDialog. And then i added the following to showListDialog: listViewArray[position] = items[item].toString(); listAdapter.notifyDataSetChanged(); – Homam Aug 04 '12 at 08:53