为了账号安全,请及时绑定邮箱和手机立即绑定

android中使用arrayadapter类的自定义列表视图

android中使用arrayadapter类的自定义列表视图

POPMUISE 2020-02-03 13:07:44
当我单击列表行项目然后在行imageview中显示图像时,如何使用像Android中的iphone这样的刻度线选择行项目?if(getItem(position)!=null){img.setvisibilty(View.Visible);}        else{System.out.println("imagenull");}我使用此功能,但图像仅显示在最后一行。请帮助我如何使用刻度线图像选择项目。public class DistanceArrayAdapter extends ArrayAdapter<Constant>{public static String category,state,miles;public ImageView img;private Context context;private int current = -1;ArrayList<Constant> dataObject;public DistanceArrayAdapter(Context context, int textViewResourceId,ArrayList<Constant> dataObject) {super(context, textViewResourceId, dataObject);this.context=context;}@Overridepublic View getView(final int position, View convertView, ViewGroup parent) {View rowView=convertView;if(rowView==null){LayoutInflater inflater = (LayoutInflater) context            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);rowView = inflater.inflate(R.layout.category_row, parent, false);}    //TextView textView = (TextView) rowView.findViewById(R.id.text1);TextView textView1 = (TextView) rowView.findViewById(R.id.text2);    //textView.setText(""+getItem(position).id);textView1.setText(""+getItem(position).caption);img=(ImageView)rowView.findViewById(R.id.img);img.setVisibility(View.GONE);if(position%2==1){rowView.setBackgroundResource(R.color.even_list);}else    {        rowView.setBackgroundResource(R.color.odd_list);    }rowView.setOnClickListener(new OnClickListener(){        @Override        public void onClick(View v) {            if(img.getVisibility()==View.GONE)            {                img.setVisibility(View.VISIBLE);                System.out.println("1");            }if(img.getVisibility()==View.VISIBLE){img.setVisibility(View.GONE);System.out.println("12");}miles=getItem(position).caption;System.out.println("miles"+miles);}});return rowView;}}
查看完整描述

3 回答

?
桃花长相依

TA贡献1860条经验 获得超8个赞

在ListView上设置选择模式


    //if using ListActivity or ListFragment

 getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);


    //or


     myListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);


    //myListView is reference to your ListView


查看完整回答
反对 回复 2020-02-03
?
千万里不及你

TA贡献1784条经验 获得超9个赞

我使用数组适配器为具有复选框的列表创建了一个示例示例。


在Android中使用ArrayAdatpter使用CheckBox实现ListView


您也可以找到示例代码。


这将被输出


这是我的代码片段


我有一个具有列表视图的活动


public class MainActivity extends Activity {


 private ListView mainListView = null;

 private Planet[] planets = null;

 private ArrayAdapter<Planet> listAdapter = null;


 @Override

 public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);


  mainListView = (ListView) findViewById(R.id.mainListView);


  // When item is tapped, toggle checked properties of CheckBox and

  // Planet.

  mainListView

  .setOnItemClickListener(new AdapterView.OnItemClickListener() {

   @Override

   public void onItemClick(AdapterView<?> parent, View item,

    int position, long id) {

   Planet planet = listAdapter.getItem(position);

   planet.toggleChecked();

   PlanetViewHolder viewHolder = (PlanetViewHolder) item

    .getTag();

   viewHolder.getCheckBox().setChecked(planet.isChecked());

   }

  });


  // Create and populate planets.

  planets = (Planet[]) getLastNonConfigurationInstance();

  if (planets == null) {

   planets = new Planet[] { new Planet("Mercury"),

     new Planet("Venus"), new Planet("Earth"),

     new Planet("Mars"), new Planet("Jupiter"),

     new Planet("Saturn"), new Planet("Uranus"),

     new Planet("Neptune"), new Planet("Ceres"),

     new Planet("Pluto"), new Planet("Haumea"),

     new Planet("Makemake"), new Planet("Eris") };

  }

  ArrayList<Planet> planetList = new ArrayList<Planet>();

  planetList.addAll(Arrays.asList(planets));


  // Set our custom array adapter as the ListView's adapter.

  listAdapter = new PlanetArrayAdapter(this, planetList);

  mainListView.setAdapter(listAdapter);

 }


 public Object onRetainNonConfigurationInstance() {

  return planets;

 }

}

这是我正在处理复选框内容的“自定义阵列适配器”


public class PlanetArrayAdapter extends ArrayAdapter<Planet> {


 private LayoutInflater inflater;


 public PlanetArrayAdapter(Context context, List<Planet> planetList) {

 super(context, R.layout.simplerow, R.id.rowTextView, planetList);

 //Cache the LayoutInflate to avoid asking for a new one each time.

  inflater = LayoutInflater.from(context);

 }


 @Override

 public View getView(int position, View convertView, ViewGroup parent){

  Planet planet = (Planet) this.getItem(position);

  CheckBox checkBox;

  TextView textView;


  // Create a new row view

  if (convertView == null) {

  convertView = inflater.inflate(R.layout.simplerow, null);


  textView = (TextView) convertView.findViewById(R.id.rowTextView);

  checkBox = (CheckBox) convertView.findViewById(R.id.CheckBox01);


  convertView.setTag(new PlanetViewHolder(textView, checkBox));


  // If CheckBox is toggled, update the planet it is tagged with.

  checkBox.setOnClickListener(new View.OnClickListener() {

   public void onClick(View v) {

    CheckBox cb = (CheckBox) v;

    Planet planet = (Planet) cb.getTag();

    planet.setChecked(cb.isChecked());

   }

  });

  }

  // Re-use existing row view

  else {


  PlanetViewHolder viewHolder = (PlanetViewHolder) convertView

     .getTag();

   checkBox = viewHolder.getCheckBox();

   textView = viewHolder.getTextView();

  }


  checkBox.setTag(planet);


  // Display planet data

  checkBox.setChecked(planet.isChecked());

  textView.setText(planet.getName());


  return convertView;

 }


}

请!让我知道您是否有任何麻烦。


查看完整回答
反对 回复 2020-02-03
  • 3 回答
  • 0 关注
  • 965 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信