android - 两个 Listview(具有不同布局)只能与一个 customAdapter 一起使用吗?是否可以?

标签 android listview android-listview android-arrayadapter baseadapter

我有两个 Activity ,每个 Activity 都包含一个 ListView 。我已经通过 customAdapter 成功填充了第一个 ListView 。第二个 ListView (在第二个 Activity 中)具有几乎相同的布局(只是没有 imageView)。现在我的问题是我是否需要为第二个 listview 创建另一个 customAdapter 或者有一种方法可以为两个 listview 使用一个 customAdapter 。

附注 我不想在第二个 ListView 中显示 imageView

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

class MyAdapter extends BaseAdapter {
    private final Context context;
    private final String[][] strArray2d;


    public MyAdapter(Context context, String[][] Array2d) {
        this.context = context;
        this.strArray2d = Array2d;

    }

    @Override
    public int getCount() {
        return strArray2d.length;
    }

    @Override
    public Object getItem(int position) {
        return strArray2d[position];
    }

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

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        String[] strInnerArray = strArray2d[position]; // Extract innerArray[] from two dimensional strArray2d[][]
        View rowView;

        if (convertView == null) { // if it's not recycled, initialize some attributes
            LayoutInflater theInflater = LayoutInflater.from(context);
            rowView = theInflater.inflate(R.layout.row_layout, parent, false);
        } else {
            rowView = convertView;
        }

        ImageView star = (ImageView) rowView.findViewById(R.id.star);
        TextView Id = (TextView) rowView.findViewById(R.id.RowId);
        TextView BNBNumber = (TextView) rowView.findViewById(R.id.RowBNBnumber);
        TextView title = (TextView) rowView.findViewById(R.id.RowTitle);
        int isFavorite = Integer.parseInt(strInnerArray[3]);

        if (isFavorite == 1) {
            star.setImageResource(R.drawable.tick);
        }

        Id.setText(strInnerArray[0]);
        BNBNumber.setText(strInnerArray[2]);
        title.setText(strInnerArray[1]);

        return rowView;
    }
}

最佳答案

好吧,尝试在适配器的构造函数中使用标志。如果标志值为 true,则显示 imageview,否则将 imageview 可见性设置为“消失”。

因此,在第一个 Activity 中,您将向适配器构造函数传递值 true,而在第二个 Activity 中,您将传递 false。

关于android - 两个 Listview(具有不同布局)只能与一个 customAdapter 一起使用吗?是否可以?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31368938/

相关文章:

java - Fragment 和 MainActivity java 代码之间的区别?

asp.net - 向 ListView 中的 LinkBut​​ton 添加多个动态类

android - JSON 字符串数组(无对象),提取数据

android - 如何在 ViewHolder 中存储原始值?

java - 找出ListView中的哪个item被刷了

android - 在 RecyclerView 网格中放置一个不确定的进度条作为页脚

android - 使用 FragmentStatePagerAdapter 并启动新 Activity 时出现 TransactionTooLargeException

android - 将 subview 保留在 ConstraintLayout 的布局内

c# - UpdatePanel 中 ListView 中的 LinkBut​​ton 导致完全回发

java - Android 根据内容更改 ListView 子文本颜色