2012-01-23 4 views
0

私は自分自身でいくつかのものを実装することに決めたまで、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が表示されませんか?

+0

あなたが見た結果は何ですか? – akkilis

+0

結果は、既に定義したcustom_row.xmlのデフォルトビューです。 –

+0

は "pojoからアバターイメージ"をimageViewに設定するコードです。私はあなたがコード内のドローブルからそのイメージビューに設定していることがわかります – akkilis

答えて

1

の代わりに、あなたはむしろあなたが
public Drwable getAvatarImage(){
return this.avatar;
}

Then you should do as below in your getView method:
holder.avatar.setImageResource(list.get(位置).getAvatarImage)のようなアバターのクラスにメソッドを作る必要があり
holder.avatar.setImageResource(R.drawable.icon2);

を行っているアバター画像をImageViewのをupdateing ;

+0

と言ってくれてありがとう。 –

関連する問題