0

私は listView を作成していますが、3 つの異なるレイアウトを拡張したいと考えています。各行の例には条件があります。x=="F" の場合、R.layout.row1 を膨張させる必要があり、x=="t" の場合、R.layout.row2 を膨張させる必要があります。3 つの行があります。使ってみた

@Override
public int getViewTypeCount() {
    return 3;
}
//
@Override
public int getItemViewType(int position) {

    objBean = items.get(position);
    if (objBean.gettype() == "I") {
        return layout2;
    } else if (objBean.gettype() == "F") {
        return layout1;
    } else {
        return layout3;
    }
    return i;

}

そしてgetviewメソッドで

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    View view = convertView;
    final ViewHolder holder;
    objBean = items.get(position);

    int type = getItemViewType(position);

    String t = objBean.gettype();
    // if(i == 0){

    if (view == null) {

        LayoutInflater inflater = (LayoutInflater) activity
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);


        if (type == layout2) {

            view = inflater.inflate(R.layout.row1, null);

        } else if (type == layout1) {

            view = inflater.inflate(R.layout.list, null);

        } else{
            view = inflater.inflate(R.layout.twitter, null);
        }
        holder = new ViewHolder();
        view.setTag(holder);
    } else {
        holder = (ViewHolder) view.getTag();
    }

どこ

    int layout1 = 0;
int layout2 = 1;
int layout3 = 2;
4

1 に答える 1

0

答えが得られました。問題はifステートメントにあり、実行されていませんでした。私が変更され

@Override

public int getItemViewType(int position) {

objBean = items.get(position);
if (objBean.gettype() == "I") {
    return layout2;
} else if (objBean.gettype() == "F") {
    return layout1;
} else {
    return layout3;
}
return i;

}

@Override
public int getItemViewType(int position) {

    objBean = items.get(position);
    String check = objBean.gettype().toString();
    int k = objBean.getflag();
    if (check.equals("F")) {
        return layout1;
    } else if (check.equals("T")) {
        return layout3;
    } else  {
        return layout2;
    }
}
于 2013-06-03T06:43:35.113 に答える