我一直在关注this教程,一切都变得简单而直接,直到我决定自行实施一些东西。 我有以下适配器:使用数据模型创建的ListView的交互行
package alphabet.fast.scroll;
import java.util.List;
import android.app.Activity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.TextView;
public class interactiveArrayAdapter extends ArrayAdapter<model> {
private final List<model> list;
private final Activity context;
public interactiveArrayAdapter(Activity context, List<model> list) {
super(context, R.layout.custom_row, list);
this.context = context;
this.list = list;
}
static class ViewHolder {
protected ImageView avatar;
protected TextView name;
protected CheckBox checkbox;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
if (convertView == null) {
LayoutInflater inflator = context.getLayoutInflater();
view = inflator.inflate(R.layout.custom_row, null);
final ViewHolder viewHolder = new ViewHolder();
viewHolder.avatar = (ImageView) view.findViewById(R.id.avatar);
viewHolder.name = (TextView) view.findViewById(R.id.name);
viewHolder.checkbox = (CheckBox) view.findViewById(R.id.checkBox);
viewHolder.checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
model element = (model) viewHolder.checkbox.getTag();
element.setSelected(buttonView.isChecked());
}
});
view.setTag(viewHolder);
viewHolder.checkbox.setTag(list.get(position));
} else {
view = convertView;
((ViewHolder) view.getTag()).checkbox.setTag(list.get(position));
}
ViewHolder holder = (ViewHolder) view.getTag();
holder.avatar.setImageResource(R.drawable.icon2);
holder.name.setText(list.get(position).getName());
holder.checkbox.setChecked(list.get(position).isSelected());
return view;
}
}
这种模式:
package alphabet.fast.scroll;
import android.graphics.drawable.Drawable;
public class model {
private Drawable avatar;
private String name;
private boolean selected;
public model(String name) {
this.name = name;
selected = false;
}
public model(String name, Drawable avatar) {
this.avatar = avatar;
this.name = name;
selected = false;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isSelected() {
return selected;
}
public void setSelected(boolean selected) {
this.selected = selected;
}
}
和MainActivity:
package alphabet.fast.scroll;
import java.util.ArrayList;
import java.util.List;
import android.app.ListActivity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class tutorial extends ListActivity {
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
ArrayAdapter<model> adapter = new interactiveArrayAdapter(this, getModel());
setListAdapter(adapter);
}
private List<model> getModel() {
List<model> list = new ArrayList<model>();
list.add(get("Linux"));
list.add(get("Windows7"));
list.add(get("Android"));
list.add(get("iPhone"));
list.add(get2("Problem coming up here", getResources().getDrawable(R.drawable.icon)));
return list;
}
private model get(String s) {
return new model(s);
}
private model get2(String s, Drawable av) {
return new model(s, av);
}
}
能否请你告诉我什么是错我的代码,为什么我的构造函数文本和drawable不能正常工作 - 我没有得到更新的avatar
列表中的Problem coming up here
行?的
你看到的结果是什么? – akkilis
结果是我已经定义的custom_row.xml中的默认视图。 –
其中是您将“您的pojo的头像图像”设置为imageView的代码。我可以看到你正在设置“icon2”从代码中的绘图到图像视图 – akkilis