У меня есть список, содержащий флажок и текстовое представление. Когда isCheck, я изменил цвет этого представления и TextView. Но неправильное положение. Пожалуйста, скажи мне почему? Большое спасибоМетод ListView запущен в неправильном положении
public class GLPSelectFlight extends Activity implements OnClickListener {
private Button btnContinue;
private TextView tvHeader;
private LinearLayout linBack;
private ListView lvSelectFlight;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_glpselect_flight);
initView();
}
private void initView() {
linBack = (LinearLayout) findViewById(R.id.home);
linBack.setOnClickListener(this);
linBack.setVisibility(View.VISIBLE);
tvHeader = (TextView) findViewById(R.id.tvHeader);
tvHeader.setSingleLine(true);
tvHeader.setEllipsize(TruncateAt.END);
tvHeader.setText(getString(R.string.SELECT_FLIGHT));
lvSelectFlight = (ListView) findViewById(R.id.lvGlpShowFlightInfo);
adapter = new GLPShowFlightAdapter();
lvSelectFlight.setAdapter(adapter);
btnContinue = (Button) findViewById(R.id.btnContinue);
btnContinue.setOnClickListener(this);
}
private class ViewHolder {
TextView tvFlightName;
RelativeLayout rllFlightName;
CheckBox cb;
}
GLPShowFlightAdapter adapter;
ViewHolder holder;
// for temporary Adapter.
private class GLPShowFlightAdapter extends BaseAdapter {
public GLPShowFlightAdapter() {
}
@Override
public int getCount() {
return 5;
}
@Override
public Object getItem(int pos) {
return pos;
}
@Override
public long getItemId(int pos) {
return pos;
}
@Override
public View getView(final int position, View convertView,
ViewGroup parent) {
if (convertView == null) {
holder = new ViewHolder();
convertView = LayoutInflater.from(GLPSelectFlight.this)
.inflate(R.layout.glp_list_flight, parent, false);
holder.cb = (CheckBox) convertView
.findViewById(R.id.cbSelectFlight);
holder.rllFlightName = (RelativeLayout) convertView
.findViewById(R.id.rllFlightName);
holder.tvFlightName = (TextView) convertView
.findViewById(R.id.tvFlightName);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton btn,
boolean isChecked) {
if (isChecked) {
Log.e("", "checked in pos : " + position);
holder.tvFlightName.setText("POS :" + position);
holder.rllFlightName.setBackgroundColor(Color.BLUE);
} else {
Log.e("", "unchecked in pos : " + position);
holder.tvFlightName
.setText("returned POS :" + position);
holder.rllFlightName.setBackgroundColor(Color.WHITE);
}
}
});
return convertView;
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.home:
onBackPressed();
break;
case R.id.btnContinue:
Intent in = new Intent(new Intent(GLPSelectFlight.this,
TranferBonusPaymentActivity.class));
startActivity(in);
break;
}
}
}
Я загрузить изображение, когда я нажимаю на ComboBox, этот журнал сказать точное положение (это нормально). Но событие, которое я пишу, происходит в другом pos. Выше мой адаптер, все компоненты находились из макета (без проблем).
Что вы подразумеваете под неправильным положением ??? Означает ли это, что если вы проверяете флажок, меняется цвет другого текста? – Pankaj
Я проверяю позицию в поле со списком 0,1,2, ничего не происходит, но в 3 - триггер в позиции 4, а в comboBox в pos 4 вызывают это срабатывание в позиции 0. – famfamfam
, какую позицию вы получаете, когда вы нажимаете на список пункт? Я имею в виду проверку позиции внутри getView() – Meenaxi