I want to change textbutton on button onclicklistener but for every 5 row textbutton display same result. I just want change text button for 1 button clicked
xml layout childview
<Button
android:id="@+id/btn_seatmap"
style="@style/buttonSeatMap"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/txt_kereta_tiba"
android:layout_toRightOf="@+id/txt_info_seat"
android:focusable="false"
android:focusableInTouchMode="false"
android:text="@string/btn_seatmap" />
xml layout listview
<ListView
android:id="@+id/list_kereta"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/btn_pilih_jadwal"
android:layout_below="@+id/txt_title_jadwal_kai"
android:layout_marginBottom="10dp"
android:background="@android:color/white"
android:choiceMode="singleChoice"
android:dividerHeight="1dp"
android:focusable="true"
android:scrollbars="none" />
and here code from custom adapter
@Override
public View getView(final int arg0, View arg1, ViewGroup arg2) {
View view = arg1;
ListHolder listHolder = null;
if (view == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
view = inflater.inflate(layoutResourceId, arg2, false);
listHolder = new ListHolder();
listHolder.layout = (RelativeLayout) view
.findViewById(R.id.layout_jadwal_kai);
listHolder.txtNama = (TextView) view
.findViewById(R.id.txt_nama_kereta);
listHolder.txtBerangkat = (TextView) view
.findViewById(R.id.txt_kereta_brkt);
listHolder.txtHarga = (TextView) view
.findViewById(R.id.txt_harga_kereta);
listHolder.txtTiba = (TextView) view
.findViewById(R.id.txt_kereta_tiba);
listHolder.txtClass = (TextView) view
.findViewById(R.id.txt_kelas_kereta);
listHolder.txtSeat = (TextView) view
.findViewById(R.id.txt_info_seat);
listHolder.btnSeatMap = (Button) view
.findViewById(R.id.btn_seatmap);
CheckSeatOnProgress = false;
view.setTag(listHolder);
} else {
listHolder = (ListHolder) view.getTag();
}
listHolder.btnSeatMap.setTag(listHolder);
listHolder.btnSeatMap.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ListHolder holder = (ListHolder) v.getTag();
holder.btnSeatMap.setText("TEST");
// listHolder.btnSeatMap.setText("TEST");
});
adapter code
public void refreshListJadwal() {
adapter = new AdapterListKereta(getActivity(),
R.layout.custom_list_jadwalkai, setGetJadwals, dataJadwalKereta);
listKereta.setAdapter(adapter);
}
"TEST" display for every 5 row. please help. thank you
I found a work around, Not an optimal solution though :D try this,
private HashMap<Integer, String> selected = new HashMap<Integer, String>();
@Override
public View getView(final int position, @Nullable View arg1, @NonNull ViewGroup parent) {
View view = arg1;
ListHolder listHolder = null;
if (view == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
view = inflater.inflate(R.layout.list_item, parent, false);
listHolder = new ListHolder();
listHolder.nameTextView = (TextView) view.findViewById(R.id.listitem1);
listHolder.btnSeatMap = (Button) view.findViewById(R.id.listbtn1);
view.setTag(listHolder);
} else {
listHolder = (ListHolder) view.getTag();
}
if(selected != null && !selected.isEmpty() && selected.get(position) != null )
listHolder.btnSeatMap.setText("TEST");
else {
listHolder.btnSeatMap.setText("");
}
listHolder.btnSeatMap.setTag(position);
listHolder.nameTextView.setText(itemsArrayList[position]);
listHolder.btnSeatMap.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int which = -1;
Object obj = v.getTag();
if (obj instanceof Integer)
{
which = (Integer) obj;
}
Log.e("POSISITON", which+"");
selected.put(which, "TEST");
notifyDataSetChanged();
}});
return view;
}