Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在安卓系统中查看每个选择的不同图像?_Java_Android_Android Studio - Fatal编程技术网

Java 在安卓系统中查看每个选择的不同图像?

Java 在安卓系统中查看每个选择的不同图像?,java,android,android-studio,Java,Android,Android Studio,所以我想做的是为我的应用程序中的每个列表项创建一个不同的图像。我已经尝试这么做了一段时间,但不知道我在做什么 以下是我想做的: 我该怎么办?以下是我当前的代码: package net.androidbootcamp.gamesandcoffee; 导入android.app.ListActivity; 导入android.content.Intent; 导入android.net.Uri; 导入android.support.v7.app.AppActivity; 导入android.os.

所以我想做的是为我的应用程序中的每个列表项创建一个不同的图像。我已经尝试这么做了一段时间,但不知道我在做什么

以下是我想做的:

我该怎么办?以下是我当前的代码:

package net.androidbootcamp.gamesandcoffee;
导入android.app.ListActivity;
导入android.content.Intent;
导入android.net.Uri;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.view.view;
导入android.widget.ArrayAdapter;
导入android.widget.ListView;
公共类MainActivity扩展了ListActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
字符串[]吸引={“游戏”、“咖啡店”};
setListAdapter(新的ArrayAdapter(这个,R.layout.activity_main,R.id.games,attraction));
}
受保护的void onListItemClick(列表视图l、视图v、整数位置、长id){
开关(位置){
案例0:
startActivity(新意图(MainActivity.this,games.class));
打破
案例1:
startActivity(新意图(MainActivity.this,coffee.class));
打破
}
}
}
和我的XML:


为此,您必须创建一个自定义适配器,从中可以自定义所有
列表视图

public class ListAdapter extends ArrayAdapter<Item> {

    public ListAdapter(Context context, int imageViewResourceId) {
        super(context, imageViewResourceId);
    }

    public ListAdapter(Context context, int resource, List<Item> items) {
        super(context, resource, items);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        View v = convertView;

        if (v == null) {
            LayoutInflater vi;
            vi = LayoutInflater.from(getContext());
            v = vi.inflate(R.layout.itemlistrow, null);
        }

        Item p = getItem(position);

        if (p != null) {
            ImageView iv = (ImageView ) v.findViewById(R.id.id);

            if (iv != null) {
                iv .setImageResource(R.id.xyz);
            }
        }

        return v;
    }
}
公共类ListAdapter扩展了ArrayAdapter{
公共ListAdapter(上下文上下文,int-imageViewResourceId){
super(上下文,imageViewResourceId);
}
公共ListAdapter(上下文上下文、int资源、列表项){
超级(上下文、资源、项目);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图v=转换视图;
如果(v==null){
拉平机vi;
vi=LayoutInflater.from(getContext());
v=vi.充气(R.layout.itemlistrow,空);
}
项目p=获取项目(位置);
如果(p!=null){
ImageView iv=(ImageView)v.findViewById(R.id.id);
如果(iv!=null){
iv.setImageResource(R.id.xyz);
}
}
返回v;
}
}

将图像资源id加载到阵列,并以这种方式传递到列表适配器

int[] images = {R.drawables.firstimg,R.drawables.secondimg};
setListAdapter(new CustomAdapter(this,images, attraction));
板条箱自定义适配器类

public class CustomAdapter extends BaseAdapter{

private Context context;
int[] images;
String[] textdata;

public CustomAdapter(Context context, int[] images,String[] textdata) {
    this.context = context;
    this.images=images;
    this.textdata=textdata;
}

@Override
public Object getItem(int position) {
    return textdata.get(position);
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    View row = null;
    if (convertView == null){
        LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        row = layoutInflater.inflate(R.layout.drawer_listitem,parent,false);
    }else {
        row = convertView;
    }

    TextView name = (TextView) row.findViewById(R.id.draweritemtext);

    ImageView image = (ImageView) row.findViewById(R.id.draweritemimage);

    name.setText(textdata[position]);

    image.setImageResource(images[position]);
    return row;
}

@Override
public int getCount() {
    return textdata.size();
}

}

在这两个面向初学者的视频教程之后,我能够达到我想要的效果。感谢您的贡献,但所提供的答案或资源都不是针对缺乏经验的初学者的

这些是我看的视频


您必须为Listview创建自定义适配器。你可以在谷歌上搜索更多细节,比如,@Sunny,我来看看,谢谢你的链接。看起来很复杂。这是唯一的办法吗?我还是一个新手,所以我不太了解这里的一切。请参考此链接了解更多详细信息。谢谢,我会看看这个。是的,这看起来很复杂,但奇怪的是,这可能是最简单的方法。我已经做了很多次了,但仍然不明白为什么android会让它变得如此复杂,我得到了错误“无法解析构造函数”()创建自定义适配器来将数据加载到列表中我到底是怎么做的?我正在查看大量资源,但我迷路了。我有新的活动吗?我很困惑