0

MergeAdapter を使用して、セクション ヘッダーを含むリストを表示しています。このリストは正常に表示されていますが、getView メソッド内の特定のものがトリガーされてはならない場合があります。

これがトリガーされているビットです。

 @Override
public View getView(int position, View convertView, ViewGroup parent)
{
   ...
    try {
        JSONObject thisRow = items.get(position);
        ...
        View.OnClickListener myListener = new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(getContext(), ID, Toast.LENGTH_SHORT).show();
            }
        };

        JSONObject alterations = thisRow.getJSONArray("alteration").getJSONObject(0);


        // This if statement gets trigger when it shouldn't
        if (!alterations.getString("text").equals("false")) {
            CharSequence currText = time.getText();
            time.setText(currText+" vs" +ID);
            Log.d("FUApp", "Alterations 'text' isn't false at "+ID);
            Button alter = (Button) centreView.findViewById(R.id.is_alt);
            String s = String.valueOf(position);
            alter.setText(s);
            RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
            alter.setLayoutParams(lp);
            alter.setOnClickListener(myListener);
        }
    ...
    return centreView;
}

位置の値を表示するラベルを設定しました。これが私のアプリのスクリーン キャプチャです。

ここに画像の説明を入力

ボタンが表示されていることがわかるように、位置は 43 であり、ボタンはそこに表示されるべきではありません。

なぜこれが起こっているのか、私は完全に困惑しています。誰でもこれを理解するのを手伝ってもらえますか?

編集: 位置 (35 など) がビューを離れたときに画面に入る行で if ステートメントがトリガーされているようです。まだ表示されないようにする方法はまだわかりません。

4

1 に答える 1