【问题标题】:How do add images next to text Items in ListView in Android? [duplicate]如何在 Android 的 ListView 中的文本项旁边添加图像? [复制]
【发布时间】:2016-05-07 05:18:28
【问题描述】:

我正在尝试在我的 ListView 中的每个项目旁边添加一个图像,但到目前为止没有任何成功。 有一个数据库,我从中检索文本数据,如下所示:

Cursor categoriesCursor = myCategoryData.getCategoriesData();

    String[] displayCategories = new String[]{ CategoryDataSource.NAME};
    int[] displayViews = new int[]{R.id.list_name};


    setListAdapter(new SimpleCursorAdapter(
            this,
            R.layout.list_category,
            categoriesCursor,
            displayCategories,
            displayViews,1));

    myListView = getListView();

然后我创建一个数组来存储图像 ID

Integer[] imageIds = new Integer[]{
                R.drawable.cat1,
                R.drawable.cat2,
                R.drawable.cat3,
        };

我不知道如何将它们绑定在一起。非常感谢您的帮助!

【问题讨论】:

  • 创建自定义适配器,检查this

标签: android image listview text


【解决方案1】:

首先制作一个数据模型:

public class dataModel {
String title;
int imageId;

public dataModel(String title, int imageId) {
    this.title = title;
    this.imageId = imageId;
}

public String getTitle() {
    return title;
}

public void setTitle(String title) {
    this.title = title;
}

public int getImageId() {
    return imageId;
}

public void setImageId(int imageId) {
    this.imageId = imageId;
}
}

然后制作一个自定义适配器:

public class adapter extends BaseAdapter{
ArrayList<dataModel> allItems=new ArrayList<>();
Context mContext;
public adapter(Context ct, ArrayList<dataModel> allItems) {
    this.allItems = allItems;
    mContext=ct;
}

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

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

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    // YOU SHOULD INFLATE A VIEW HERE
    View mView=View.inflate(mContext,R.id.YOUR_VIEW_ID,null);
    TextView mText= .... ;
    ImageView mImage= ... ;

    dataModel mModel=(dataModel) getItem(position);
    mText.setText(mModel.getTitle());
    mImage.setImageResource(mModel.getImageId());

    return mView;
}
}

在你的活动中这样做:

 String[] displayCategories = new String[]{ CategoryDataSource.NAME};
int[] displayViews = new int[]{R.id.list_name};

// make an array list of dataModel Items
ArrayList<dataModel> data=new ArrayList<dataModel>();
for(int i=0;i<displayCategories.length;i++){
    data.add(new dataModel(displayCategories[i],displayViews[i]));
}

setListAdapter(new adapter(this,data));

【讨论】:

    猜你喜欢
    • 2016-04-06
    • 1970-01-01
    • 2016-08-17
    • 1970-01-01
    • 2017-03-05
    • 2013-10-01
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    相关资源
    最近更新 更多