但是自訂的Listview 要挷 很多 Button 怎麼做?
最近要做這一部份,
明明幾個月前有搞定,
可是就是忘了哩!
爬文也爬不到,
只好爬起自已的code。
userlist_item.xml
ListActivity.java
public class ListActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mlist_view);
ArrayList> list = new ArrayList>();
int i = 0;
while (i<20 hashmap="hashmap" string="string" tring="tring"> item =new HashMap();
item.put("title", "title" + i);
item.put("img", "img" + i);
list.add(item);
i++;
}
ListView listview = (ListView) findViewById(R.id.alist);
ListApapter items = new ListApapter(A,
list,
R.layout.userlist_item,
new String[] {"title","img"},
new int[] {R.id.textTitle,R.id.imageView});
listview.setAdapter(items);
}
strings.xml
ListApapter.javamusic MIXER
package wolke.passingNotes;
import java.util.List;
import java.util.Map;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageButton;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ToggleButton;
import android.widget.SimpleAdapter.ViewBinder;
public class ListApapter extends SimpleAdapter {
private int[] mTo;
private String[] mFrom;
private ViewBinder mViewBinder;
private List> mData;
private int mResource;
private int mDropDownResource;
private LayoutInflater mInflater;
public ListApapter(Context context, List> data,
int resource, String[] from, int[] to) {
super(context, data, resource, from, to);
// TODO Auto-generated constructor stub
mData = data;
mResource = mDropDownResource = resource;
mFrom = from;
mTo = to;
mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public View getView(int position, View convertView, ViewGroup parent) {
return createViewFromResource(position, convertView, parent, mResource);
}
private View createViewFromResource(int position, View convertView,
ViewGroup parent, int resource) {
// TODO Auto-generated method stub
View v;
if (convertView == null) {
v = mInflater.inflate(resource, parent, false);
final int[] to = mTo;
final int count = to.length;
final View[] holder = new View[count];
for (int i = 0; i < count; i++) {
holder[i] = v.findViewById(to[i]);
}
v.setTag(holder);
} else {
v = convertView;
}
bindView(position, v);
return v;
}
private void bindView(int position, View view) {
// TODO Auto-generated method stub
final Map dataSet = mData.get(position);
if (dataSet == null) {
return;
}
final ViewBinder binder = mViewBinder;
final View[] holder = (View[]) view.getTag();
final String[] from = mFrom;
final int[] to = mTo;
final int count = to.length;
for (int i = 0; i < count; i++) {
final View v = holder[i];
if (v != null) {
final Object data = dataSet.get(from[i]);
String text = data == null ? "" : data.toString();
if (text == null) {
text = "";
}
boolean bound = false;
if (binder != null) {
bound = binder.setViewValue(v, data, text);
}
if (!bound) {
if (v instanceof ImageButton) {
Log.d(""+text,v.toString());
//((ImageButton) v).setTag(position);
v.setTag(R.id.tag_button_type, text);
v.setTag(R.id.tag_button_position, position);
((ImageButton) v).setOnClickListener(new OnClickListener(){
public void onClick(View v) {
// TODO Auto-generated method stub
//Log.d("text",text);
//int position = (Integer)((ImageButton) v).getTag();
int position = (Integer) v.getTag(R.id.tag_button_position);
String text = (String) v.getTag(R.id.tag_button_type);
//Map dataSet = mData.get(position);
//String tel = (String) dataSet.get("tel");
//String img = (String) dataSet.get("img");
Toast.makeText(v.getContext(), text, Toast.LENGTH_SHORT).show();
}});
}else if (v instanceof TextView) {
((TextView) v).setText(text);
}
}
}
}
}
}
部份引用自其他source ocde,
因為 東改西改,
故難然註明部份code出處,
若有引用到請見諒。
沒有留言:
張貼留言