Custom listview using arrayadapter class in android

how to select row item using iphone type mark label in android? iam using imageview in list_row.xml.when I click on a list item and then display the image in a row image view.

if(getItem(position)!=null){ img.setvisibilty(View.Visible);} else{System.out.println("imagenull");} 

iam using this but displaying the image in the last line only.please will help me select an item using the tickmark image.

 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; } @Override public 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; } } 
0
source share
4 answers

Figure from https://groups.google.com/forum/?fromgroups#!topic/android-developers/No0LrgJ6q2M

 public class MainActivity extends Activity implements AdapterView.OnItemClickListener { String[] GENRES = new String[] {"Action", "Adventure", "Animation", "Children", "Comedy", "Documentary", "Drama", "Foreign", "History", "Independent", "Romance", "Sci-Fi", "Television", "Thriller"}; private CheckBoxAdapter mCheckBoxAdapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final ListView listView = (ListView) findViewById(R.id.lv); listView.setItemsCanFocus(false); listView.setTextFilterEnabled(true); listView.setOnItemClickListener(this); mCheckBoxAdapter = new CheckBoxAdapter(this, GENRES); listView.setAdapter(mCheckBoxAdapter); Button b = (Button) findViewById(R.id.button1); b.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub StringBuilder result = new StringBuilder(); for (int i = 0; i < GENRES.length; i++) { if (mCheckBoxAdapter.mCheckStates.get(i) == true) { result.append(GENRES[i]); result.append("\n"); } } Toast.makeText(MainActivity.this, result, 1000).show(); } }); } public void onItemClick(AdapterView parent, View view, int position, long id) { mCheckBoxAdapter.toggle(position); } class CheckBoxAdapter extends ArrayAdapter implements CompoundButton.OnCheckedChangeListener { LayoutInflater mInflater; TextView tv1, tv; CheckBox cb; String[] gen; private SparseBooleanArray mCheckStates; private SparseBooleanArray mCheckStates; CheckBoxAdapter(MainActivity context, String[] genres) { super(context, 0, genres); mCheckStates = new SparseBooleanArray(genres.length); mInflater = (LayoutInflater) MainActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE); gen = genres; } @Override public int getCount() { // TODO Auto-generated method stub return gen.length; } } } 

activity_main.xml

  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ListView android:id="@+id/lv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/button1"/> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:text="Button" /> </RelativeLayout> 

And the XML file for the flags:

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="15dp" android:layout_marginTop="34dp" android:text="TextView" /> <CheckBox android:id="@+id/checkBox1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_below="@+id/textView1" android:layout_marginRight="22dp" android:layout_marginTop="23dp" /> </RelativeLayout> 

When the button is pressed, a toast message is displayed with a list of the selected item. You can change the above according to your requirements.

enter image description here

+2
source

Set select mode to 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 
+1
source

1.Select the visibility gone for you tick the image

2.Implement view.setOnClickListener in arrayadapter .

3. In this check image.getVisibility()==View.GONE do image.setVisibity(View.Visible)

4.if image.getVisiblity()==View.VISIBLE then make your image.setVisibity(View.GONE)

Try it.

0
source

I created one sample example for a checklist using the Array adapter.

ListView with CheckBox using ArrayAdatpter in Android

You can also find sample code.

It will be displayed

enter image description here

Here is the code as I do

I have an Activity List List

 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 adapter. listAdapter = new PlanetArrayAdapter(this, planetList); mainListView.setAdapter(listAdapter); } public Object onRetainNonConfigurationInstance() { return planets; } } 

And here is the custom array adapter where I process the checkbox.

 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; } } 

You are welcome! let me know if you have a problem with this.

0
source

Source: https://habr.com/ru/post/1502162/


All Articles