Aaron B.
- Forum-Beiträge: 206
07.07.2013, 08:29:21 via App
07.07.2013 08:29:21 via App
Hallo
Ich versuche, einen Custom-View (Extends ScrollView) in meiner xml-Datei zu nutzen. Leider stürzt das Ganze ab.
Mein Code:
Und in meiner xml-Datei:
Was ist daran falsch?
LG
Ich versuche, einen Custom-View (Extends ScrollView) in meiner xml-Datei zu nutzen. Leider stürzt das Ganze ab.
Mein Code:
1package de.wypeedit.classes;
2
3import android.content.*;
4import android.graphics.*;
5import android.view.*;
6import android.widget.*;
7
8public class FixedListView extends ScrollView
9{
10
11 Context c;
12 Adapter adapter;
13
14 FixedListView.OnItemClickListener clickListener;
15 FixedListView.OnItemLongClickListener longClickListener;
16
17 public FixedListView(Context c) {
18 super(c);
19 this.c = c;
20 }
21
22 public void setAdapter(Adapter adapter) {
23 this.adapter = adapter;
24 notifyChanges();
25 }
26
27 public Adapter getAdapter() {
28 return adapter;
29 }
30
31 public void setOnItemClickListener(FixedListView.OnItemClickListener clickListener) {
32 this.clickListener = clickListener;
33 notifyChanges();
34 }
35
36 public void setOnItemLongClickListener(FixedListView.OnItemLongClickListener longClickListener) {
37 this.longClickListener = longClickListener;
38 notifyChanges();
39 }
40
41 public void notifyChanges() {
42 removeAllViews();
43 LinearLayout layout = new LinearLayout(c);
44 layout.setOrientation(LinearLayout.VERTICAL);
45
46 if(adapter != null) {
47 for(int i = 0; i < adapter.getCount(); i ++) {
48 View resd = null;
49 resd = adapter.getView(i, resd, this);
50
51 Boolean clicki = false;
52
53 Button res = new Button(c);
54
55 final View fres = res;
56 final int fi = i;
57
58 if(clickListener != null) {
59 res.setClickable(true);
60 clicki = true;
61 }
62
63 if(longClickListener != null) {
64 res.setLongClickable(true);
65 clicki = true;
66 }
67
68 if(clickListener != null) {
69 res.setOnClickListener(new OnClickListener() {
70 public void onClick(View v) {
71 clickListener.onItemClick(fres, fi);
72 }
73 });
74 }
75
76 if(longClickListener != null) {
77 res.setOnLongClickListener(new OnLongClickListener() {
78 public boolean onLongClick(View v) {
79 longClickListener.onItemLongClick(fres, fi);
80
81 return true;
82 }
83 });
84 }
85
86 RelativeLayout.LayoutParams resdlay = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
87 resdlay.bottomMargin = 5;
88
89 RelativeLayout resL = new RelativeLayout(c);
90 resd.setLayoutParams(resdlay);
91 res.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT));
92 res.setBackgroundResource(de.wypeedit.R.drawable.flvbg);
93 resL.addView(resd);
94 if(clicki) {
95 resL.addView(res);
96 }
97
98 layout.addView(resL);
99 }
100
101 addView(layout);
102 }
103 }
104
105 public interface OnItemClickListener {
106 public void onItemClick(View v, int position);
107 }
108
109 public interface OnItemLongClickListener {
110 public boolean onItemLongClick(View v, int position);
111 }
112
113}
2
3import android.content.*;
4import android.graphics.*;
5import android.view.*;
6import android.widget.*;
7
8public class FixedListView extends ScrollView
9{
10
11 Context c;
12 Adapter adapter;
13
14 FixedListView.OnItemClickListener clickListener;
15 FixedListView.OnItemLongClickListener longClickListener;
16
17 public FixedListView(Context c) {
18 super(c);
19 this.c = c;
20 }
21
22 public void setAdapter(Adapter adapter) {
23 this.adapter = adapter;
24 notifyChanges();
25 }
26
27 public Adapter getAdapter() {
28 return adapter;
29 }
30
31 public void setOnItemClickListener(FixedListView.OnItemClickListener clickListener) {
32 this.clickListener = clickListener;
33 notifyChanges();
34 }
35
36 public void setOnItemLongClickListener(FixedListView.OnItemLongClickListener longClickListener) {
37 this.longClickListener = longClickListener;
38 notifyChanges();
39 }
40
41 public void notifyChanges() {
42 removeAllViews();
43 LinearLayout layout = new LinearLayout(c);
44 layout.setOrientation(LinearLayout.VERTICAL);
45
46 if(adapter != null) {
47 for(int i = 0; i < adapter.getCount(); i ++) {
48 View resd = null;
49 resd = adapter.getView(i, resd, this);
50
51 Boolean clicki = false;
52
53 Button res = new Button(c);
54
55 final View fres = res;
56 final int fi = i;
57
58 if(clickListener != null) {
59 res.setClickable(true);
60 clicki = true;
61 }
62
63 if(longClickListener != null) {
64 res.setLongClickable(true);
65 clicki = true;
66 }
67
68 if(clickListener != null) {
69 res.setOnClickListener(new OnClickListener() {
70 public void onClick(View v) {
71 clickListener.onItemClick(fres, fi);
72 }
73 });
74 }
75
76 if(longClickListener != null) {
77 res.setOnLongClickListener(new OnLongClickListener() {
78 public boolean onLongClick(View v) {
79 longClickListener.onItemLongClick(fres, fi);
80
81 return true;
82 }
83 });
84 }
85
86 RelativeLayout.LayoutParams resdlay = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
87 resdlay.bottomMargin = 5;
88
89 RelativeLayout resL = new RelativeLayout(c);
90 resd.setLayoutParams(resdlay);
91 res.setLayoutParams(new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, RelativeLayout.LayoutParams.FILL_PARENT));
92 res.setBackgroundResource(de.wypeedit.R.drawable.flvbg);
93 resL.addView(resd);
94 if(clicki) {
95 resL.addView(res);
96 }
97
98 layout.addView(resL);
99 }
100
101 addView(layout);
102 }
103 }
104
105 public interface OnItemClickListener {
106 public void onItemClick(View v, int position);
107 }
108
109 public interface OnItemLongClickListener {
110 public boolean onItemLongClick(View v, int position);
111 }
112
113}
Und in meiner xml-Datei:
1<de.wypeedit.classes.FixedListView
2 android:layout_width="fill_parent"
3 android:layout_height="wrap_content" />
2 android:layout_width="fill_parent"
3 android:layout_height="wrap_content" />
Was ist daran falsch?
LG
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.