【发布时间】:2021-03-30 04:47:42
【问题描述】:
我有一个项目列表,单击列表后,新活动将打开并显示详细信息。 问题是我无法实现 - 单击详细活动中的特定字符串后加载图像。 比如在MainActivity中,有:
String one[] = {"dog", "cat", "horse", "snail"};
String two[] = {"aaa", "bbb", "ccc", "ddd"};
String three[] = {"111", "**222**", "333", "**222**"};
打开应用程序,单击第二个列表项(猫)并打开带有详细信息的新活动(猫的所有字符串) 在这种情况下,我需要在单击“字符串三”后 - 如果字符串是 222,则打开图像(drawable/222.jpg),在这种情况下是“猫”和“蜗牛”。 然后点击“333”显示图片333.jpg ...
如果可能的话,最好用后退按钮打开图片,回到详细的活动。
简化的 MainActivity:
String one[] = {"dog", "cat", "horse", "snail"};
String two[] = {"aaa", "bbb", "ccc", "ddd"};
String three[] = {"111", "222", "333", "222"};
List<ItemsModel> itemsModelList = new ArrayList<>();
ListView listView;
CustomAdapter customAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = findViewById(R.id.listview);
for(int i = 0;i < one.length;i++){
ItemsModel itemsModel = new ItemsModel(one[i],two[i],three[i]);
itemsModelList.add(itemsModel);
}
customAdapter = new CustomAdapter(itemsModelList,this);
listView.setAdapter(customAdapter);
}
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
int id = item.getItemId();
if(id == R.id.searchView){
return true;
}
return super.onOptionsItemSelected(item);
}
public class CustomAdapter extends BaseAdapter implements Filterable {
private List<ItemsModel> itemsModelsl;
private List<ItemsModel> itemsModelListFiltered;
private Context context;
public CustomAdapter(List<ItemsModel> itemsModelsl, Context context) {
this.itemsModelsl = itemsModelsl;
this.itemsModelListFiltered = itemsModelsl;
this.context = context;
}
@Override
public int getCount() {
return itemsModelListFiltered.size();
}
@Override
public Object getItem(int position) {
return itemsModelListFiltered.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = getLayoutInflater().inflate(R.layout.row_items,null);
TextView one = view.findViewById(R.id.one);
TextView two = view.findViewById(R.id.two);
one.setText(itemsModelListFiltered.get(position).getone());
two.setText(itemsModelListFiltered.get(position).gettwo());
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.e("main activity","item clicked");
startActivity(new Intent(MainActivity.this, ItemsActivity.class).putExtra("items",itemsModelListFiltered.get(position)));
}
});
return view;
}
//// 项目模型:
public class ItemsModel implements Serializable {
private String one;
private String two;
private String three;
public ItemsModel(String one, String two, String three) {
this.one = one;
this.two = two;
this.three = three;
}
public String getone() {
return one;
}
public void setone(String one) {
this.one = one;
}
public String gettwo() {return two; }
public void settwo(String two) { this.two = two; }
public String getthree() {return three; }
public void setthree(String three) { this.three = three; }
///
如果你需要Itemactivity或activity.xml我会复制。
【问题讨论】:
-
那么,问题出在哪里?
-
我没有设法在代码中实现这个 -> 如果字符串是 222,打开图像 (drawable/222.jpg)
标签: android string image listview load