0

私は多くの調査を行い、私と大学はこれを理解しようと何時間も費やしました. これが重複として閉じられるリスクがあるので、他に頼る場所がありませんでした! 繰り返されるListViewの多くのソリューションに出くわし、ビューが(convertViewを使用して)どのように再利用されるかを理解しています。しかし、私の問題がどこから来たのかを見つけることができないようです。リスト内の 1 つの EditText にテキストを入力すると、5 ~ 6 個の項目が表示されます...同じテキストが表示されます。

皆さんが私を助けてくれるように、以下にコードを添付しましgetView(...)たが、他に何か必要な場合はお知らせください.

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
    // inflator for all the views
    LayoutInflater vi = (LayoutInflater) mActivity
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    // the object where I will be getting my display data
    final Object currentItem = drawItems.get(position);

    // standard adapter/view stuff
    View v = convertView;
    ViewHolder holder = null;

    int type = getItemViewType(position);

    if (v == null) {
        holder = new ViewHolder();
        switch (type) {
        case TYPE_ROW:
            v = vi.inflate(R.layout.row_textview, null);

            // get my views
            holder.editText= (EditText) v
                    .findViewById(R.id.line_edittextview);


            break;

        case TYPE_SUMMARY:

            v = vi.inflate(R.layout.row_summary, null);

            break;
        }

        Log.i(TAG, "Convert View Tag being set: " + holder);
        v.setTag(holder);

    } else {
        Log.i(TAG,
                "Getting holder from Convert View Tag: " + v.getTag());
        holder = (ViewHolder) v.getTag();
    }

    switch (type) {

    case TYPE_ROW:

        Log.i(TAG, "Holder in use: " + holder);

        holder.editText.setText("Line " + (position + 1));

        break;

    case TYPE_SUMMARY:

        break;

    }
    return v;
}

@Override
public int getItemViewType(int position) {
    return TYPE_BETSLIP;
}

@Override
public int getViewTypeCount() {
    return 2;
}

ありがとう!:-)

4

1 に答える 1

0

可能なすべてのフローでビューを処理すると思います。つまり、 ifで何かをした場合、 elseで元に戻します。同様に、コード内で、行ったテキストの設定を次のように元に戻します

case TYPE_ROW:
    holder.textView.setText("Line " + (position + 1));
    break; 
case TYPE_SUMMARY:
    holder.textView.setText("");
    break;

これがうまくいくことを願っています。次に、リストの 2 つのビューを膨らませています。もう一方の Visibility を 1GONE程度に設定して使用することをお勧めします。

于 2013-07-24T10:58:53.990 に答える