Reputation: 104
This is my onItemClickListener Method
//list item listener
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
LinearLayout parent = (LinearLayout) view;
TextView t = (TextView) parent.findViewById(R.id.grocery_item_name);
t.setText("Something");
}
Edit: This is the Adapter Class
code to call adapter:
adapter = new CustomList(this,R.layout.listitems_improved,Items);
listview.setAdapter(adapter);
private class CustomList extends ArrayAdapter{
ArrayList<Item> items;
Activity myActivity;
LayoutInflater layoutinflater;
View myview;
public ProductsCustomList(Context context, int resource, ArrayList<item> i) {
super(context, resource, p);
this.items = i;
this.myActivity = (Activity) context;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//Inflate the custom row layout in the view
layoutinflater = myActivity.getLayoutInflater();
myview = layoutinflater.inflate(R.layout.groceryitems_custom_listview, null);
//instantiate the views in custom row layout
TextView tv = (TextView) myview.findViewById(R.id.tv);
tv.setText(items.get(position).getItemName());
return myview;
}
}
When I call this line t.setText("Something");
textview doesn't change in the ListView, nothing happens. Why is it not wokring here?
Upvotes: 0
Views: 86
Reputation: 3110
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
LinearLayout parent = (LinearLayout) view;
TextView t = (TextView) parent.getChilldId(i).findViewById(R.id.grocery_item_name);
t.setText("Something");
}
Upvotes: 0
Reputation: 2483
Please try this in your getView() method in your Adapter class:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//Inflate the custom row layout in the view
layoutinflater = myActivity.getLayoutInflater();
myview = layoutinflater.inflate(R.layout.groceryitems_custom_listview, null);
//instantiate the views in custom row layout
TextView tv = (TextView) myview.findViewById(R.id.tv);
tv.setText(items.get(position).getItemName());
myview.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
TextView view = (TextView) v.findViewById(R.id.your_text_id);
view.setText("text_changed");
}
});
return myview;
}
Upvotes: 1
Reputation: 1316
You also can try to include the listener in adapter:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
//Inflate the custom row layout in the view
layoutinflater = myActivity.getLayoutInflater();
myview = layoutinflater.inflate(R.layout.groceryitems_custom_listview, null);
//instantiate the views in custom row layout
TextView tv = (TextView) myview.findViewById(R.id.tv);
tv.setText(items.get(position).getItemName());
tv.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View arg0){
tv.setText("selected");
}
});
return myview;
}
Upvotes: 0
Reputation: 1316
You can do something like this:
final Adapter yourAdapter = new Adapter(context, items);
listview.setAdapter(yourAdapter);
listview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l){
//change value for item select
items.get(i).setItemName("yourText");
yourAdapter.notifyDataSetChanged();
//if the this line don't refresh the list, you can recreate adapter:
//listview.setAdapter(new Adapter(context, items);
}
Regards.
Upvotes: 1