Я пытаюсь скрыть/показать изображение из пользовательской базы списка в условии. Тем не менее, попытка использования приведенного ниже кода не скрывает/не показывает изображение на основе условия. Как вы можете видеть ниже в mainactivity.java У меня есть строка переменной сообщение теперь внутри метода частных ArrayList generateData() я поставил сообщение = nopic/сообщение = yespic. Я передаю значение String (значение сообщения) в свой пользовательский адаптер. Затем внутри моего пользовательского адаптера, если сообщение == "nopic" скрывает изображение из списка, показывается показ изображения в listview.Скрыть/показать ImageView из списка
Я пробовал следующий код, но он не скрывает изображение, а не все изображения.
Можете ли вы помочь мне достичь этого, пожалуйста,
mainactivity.java
public class MainActivity extends ActionBarActivity
{
private String[] fruits =
{
"Apple", "Mango", "Banana", "Grapes", "Straberries", "Pineapple", "Berry"
};
private String message;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayList<Item> items=generateData();
MyAdapter adapter=new MyAdapter(getApplicationContext(),items, message);
final ListView listview = (ListView) findViewById(R.id.listView1);
listview.setAdapter(adapter);
}
private ArrayList<Item> generateData()
{
MyAdapter adapter=new MyAdapter(getApplicationContext(),null, null);
ArrayList<Item> items = new ArrayList<Item>();
for(int i=0; i<fruits.length; i++)
{
if(fruits[i].toString().equals("Grapes"))
{
message = "nopic";
items.add(new Item("Grapes sweet", null));
adapter.notifyDataSetChanged();
}
else
{
message = "yespic";
items.add(new Item(fruits[i].toString(), null));
adapter.notifyDataSetChanged();
}
}
return items;
}
MyAdapter.java
public class MyAdapter extends ArrayAdapter<Item> {
private final Context context;
private final ArrayList<Item> itemsArrayList;
public String message;
public MyAdapter(Context context, ArrayList<Item> itemsArrayList, String message) {
super(context, R.layout.row, itemsArrayList);
this.context = context;
this.itemsArrayList = itemsArrayList;
this.message = message;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.row, parent, false);
TextView title = (TextView) rowView.findViewById(R.id.textView1);
ImageView pic = (ImageView) rowView.findViewById(R.id.imageView1);
title.setText(itemsArrayList.get(position).getTitle());
if(message == "nopic")
{
pic.setVisibility(View.GONE);
}
if(message == "yespic")
{
pic.setVisibility(View.VISIBLE);
pic.setImageResource(R.drawable.abc_ic_voice_search);
}
return rowView;
}
'if (message ==" nopic ")'. Вы имеете в виду: 'if (message.equals (" nopic ")). 'inside mainactivity.java' Пожалуйста, не делайте это жирным шрифтом. Вместо этого напишите его как «MainActivity.java». – greenapps
Что такое «адаптер MyAdapter» = новый MyAdapter (getApplicationContext(), null, null); ? И этот адаптер не подключен к вашему элементу ListView. – tomm
В generateData() просто заполните ArrayList и больше ничего не делайте, возвращайте заполненный список из функции generateData(), затем поместите этот список в конструктор Adapter, присоедините адаптер к ListView и вызовите notifyDataSetChanged – tomm