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 ステートメントがトリガーされているようです。まだ表示されないようにする方法はまだわかりません。