Michael Kunz
- Forum-Beiträge: 1
27.01.2012, 07:57:25 via Website
27.01.2012 07:57:25 via Website
Hi Leute,
mich macht meine ListView noch irre . Ich versuchte nun schon einige Zeit folgendes Problem zu lösen. Habe eine Liste in der eine Textview liegt. Sobald ich ein Objekt anklicke, soll sich dessen Background ändern. Das klappt auch schon alles.
Aber Probleme gibt es wenn ich in meiner Liste scrollen muss. Wenn ich z.B. das erste Element selektiere und scrolle dann nach unten, ist auch automatisch das nächste sichtbare Element mit selektiert.
Hier mal mein Code:
Danke und Viele Grüße
Mic
mich macht meine ListView noch irre . Ich versuchte nun schon einige Zeit folgendes Problem zu lösen. Habe eine Liste in der eine Textview liegt. Sobald ich ein Objekt anklicke, soll sich dessen Background ändern. Das klappt auch schon alles.
Aber Probleme gibt es wenn ich in meiner Liste scrollen muss. Wenn ich z.B. das erste Element selektiere und scrolle dann nach unten, ist auch automatisch das nächste sichtbare Element mit selektiert.
Hier mal mein Code:
1public class MyCustomAdapter extends ArrayAdapter<BasketItem> {
2 private View row;
3 // used to keep selected position in ListView
4 private int selectedPos = -1; // init value for not-selected
5
6 private final Activity context;
7 private final List<BasketItem> list;
8
9
10 public MyCustomAdapter(Activity context, int textViewResourceId,
11 ArrayList<BasketItem> list) {
12
13 super(context, R.layout.condiment_list_items,list);
14 this.context = context;
15 this.list = list;
16
17 }
18
19 class ViewHolder {
20 protected TextView text;
21 protected CheckBox checkbox;
22 //protected ImageView icon;
23 }
24
25 public void setSelectedPosition(int pos){
26 selectedPos = pos;
27 // inform the view of this change
28 notifyDataSetChanged();
29 }
30
31 public int getSelectedPosition(){
32 return selectedPos;
33 }
34
35 @Override
36 public void notifyDataSetChanged() {
37 super.notifyDataSetChanged();
38 }
39
40
41 public View getView(final int position, View convertView, ViewGroup parent) {
42 View view = null;
43 if (convertView == null) {
44 LayoutInflater inflator = context.getLayoutInflater();
45 view = inflator.inflate(R.layout.condiment_list_items, null);
46 final ViewHolder viewHolder = new ViewHolder();
47 //viewHolder.icon = (ImageView)view.findViewById(R.id.iv_loeschen_icon);
48 viewHolder.text = (TextView) view.findViewById(R.id.tx_condiment_list_items);
49 viewHolder.text.setTag(list.get(position));
50 viewHolder.text.setBackgroundDrawable(null);
51 viewHolder.text.setOnClickListener(new OnClickListener() {
52 @Override
53 public void onClick(View v) {
54 BasketItem item = (BasketItem)
55 v.getTag();
56 if(item.getKorb() == 0){
57 item.setKorb(1);
58 v.setBackgroundDrawable(getResources().getDrawable(R.drawable.strike_out));
59 Toast.makeText(mContext, item.getZutat(), Toast.LENGTH_LONG).show();
60 }else{
61 item.setKorb(0);
62 v.setBackgroundDrawable(null);
63 }
64 }
65 });
66
67
68 viewHolder.text.setOnLongClickListener(new OnLongClickListener() {
69 @Override
70 public boolean onLongClick(View v) {
71 ArrayList<BasketItem> list = new ArrayList<BasketItem>();
72 BasketItem item = (BasketItem) viewHolder.text.getTag();
73 list.add(item);
74 Intent intent = new Intent(mContext, ContextMenuHelperCondimentList.class);
75 intent.putParcelableArrayListExtra ("list", (ArrayList<? extends Parcelable>) list);
76 startActivity(intent);
77 return true;
78 }
79 });
80 view.setTag(viewHolder);
81 viewHolder.text.setTag(list.get(position));
82
83 if(list.get(position).getKorb()==1){
84 viewHolder.text.setBackgroundDrawable(getResources().getDrawable(R.drawable.strike_out));
85 }else{
86 viewHolder.text.setBackgroundDrawable(null);
87 }
88
89 } else {
90 view = convertView;
91 }
92 ViewHolder holder = (ViewHolder) view.getTag();
93 holder.text.setText(list.get(position).getZutat());
94 holder.text.setTypeface(mFontNormal);
95 return view;
96 }
97
98 }
2 private View row;
3 // used to keep selected position in ListView
4 private int selectedPos = -1; // init value for not-selected
5
6 private final Activity context;
7 private final List<BasketItem> list;
8
9
10 public MyCustomAdapter(Activity context, int textViewResourceId,
11 ArrayList<BasketItem> list) {
12
13 super(context, R.layout.condiment_list_items,list);
14 this.context = context;
15 this.list = list;
16
17 }
18
19 class ViewHolder {
20 protected TextView text;
21 protected CheckBox checkbox;
22 //protected ImageView icon;
23 }
24
25 public void setSelectedPosition(int pos){
26 selectedPos = pos;
27 // inform the view of this change
28 notifyDataSetChanged();
29 }
30
31 public int getSelectedPosition(){
32 return selectedPos;
33 }
34
35 @Override
36 public void notifyDataSetChanged() {
37 super.notifyDataSetChanged();
38 }
39
40
41 public View getView(final int position, View convertView, ViewGroup parent) {
42 View view = null;
43 if (convertView == null) {
44 LayoutInflater inflator = context.getLayoutInflater();
45 view = inflator.inflate(R.layout.condiment_list_items, null);
46 final ViewHolder viewHolder = new ViewHolder();
47 //viewHolder.icon = (ImageView)view.findViewById(R.id.iv_loeschen_icon);
48 viewHolder.text = (TextView) view.findViewById(R.id.tx_condiment_list_items);
49 viewHolder.text.setTag(list.get(position));
50 viewHolder.text.setBackgroundDrawable(null);
51 viewHolder.text.setOnClickListener(new OnClickListener() {
52 @Override
53 public void onClick(View v) {
54 BasketItem item = (BasketItem)
55 v.getTag();
56 if(item.getKorb() == 0){
57 item.setKorb(1);
58 v.setBackgroundDrawable(getResources().getDrawable(R.drawable.strike_out));
59 Toast.makeText(mContext, item.getZutat(), Toast.LENGTH_LONG).show();
60 }else{
61 item.setKorb(0);
62 v.setBackgroundDrawable(null);
63 }
64 }
65 });
66
67
68 viewHolder.text.setOnLongClickListener(new OnLongClickListener() {
69 @Override
70 public boolean onLongClick(View v) {
71 ArrayList<BasketItem> list = new ArrayList<BasketItem>();
72 BasketItem item = (BasketItem) viewHolder.text.getTag();
73 list.add(item);
74 Intent intent = new Intent(mContext, ContextMenuHelperCondimentList.class);
75 intent.putParcelableArrayListExtra ("list", (ArrayList<? extends Parcelable>) list);
76 startActivity(intent);
77 return true;
78 }
79 });
80 view.setTag(viewHolder);
81 viewHolder.text.setTag(list.get(position));
82
83 if(list.get(position).getKorb()==1){
84 viewHolder.text.setBackgroundDrawable(getResources().getDrawable(R.drawable.strike_out));
85 }else{
86 viewHolder.text.setBackgroundDrawable(null);
87 }
88
89 } else {
90 view = convertView;
91 }
92 ViewHolder holder = (ViewHolder) view.getTag();
93 holder.text.setText(list.get(position).getZutat());
94 holder.text.setTypeface(mFontNormal);
95 return view;
96 }
97
98 }
Danke und Viele Grüße
Mic
— geändert am 27.01.2012, 07:57:52
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.