私は自分自身でいくつかのものを実装することに決めたまで、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が正常に動作していません - ListViewのProblem coming up here
行の更新されたavatar
が表示されませんか?
あなたが見た結果は何ですか? – akkilis
結果は、既に定義したcustom_row.xmlのデフォルトビューです。 –
は "pojoからアバターイメージ"をimageViewに設定するコードです。私はあなたがコード内のドローブルからそのイメージビューに設定していることがわかります – akkilis