两个Listview(具有不同的布局)只能与一个customAdapter一起使用?可能吗?

时间:2015-07-12 14:38:58

标签: android listview android-listview android-arrayadapter baseadapter

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

P.S 我不想在第二个列表视图中显示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;
    }
}

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

如果我正确理解您的问题,您有2个列表视图的2个布局文件。 ListView1 - R.layout.layout_1和ListView2 - R.layout.layout_2。

你可以做的是在MyAdapter的构造函数中传递活动的布局文件。喜欢这个

rbenv install 2.1.4

我希望它有所帮助。