Android ListView Custom ArrayAdapter
Date : March 29 2020, 07:55 AM
|
Android Custom ListView with ArrayAdapter<String> possible?
Date : March 29 2020, 07:55 AM
around this issue This is an example of listview with its single row having two textviews. This the thing you wanted: CustomListView.java: package com.customlistview;
import java.util.ArrayList;
import resources.PlacesListAdapter;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ListView;
public class CustomListView extends Activity {
/** Called when the activity is first created. */
private ArrayList<String> mPlacesData1 = new ArrayList<String>();
private ArrayList<String> mPlacesData2 = new ArrayList<String>();
PlacesListAdapter mPLAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mPlacesData1.clear();
mPlacesData2.clear();
mPlacesData1.add("ICD1");
mPlacesData2.add("SubTitle1");
mPlacesData1.add("ICD2");
mPlacesData2.add("SubTitle2");
mPlacesData1.add("ICD3");
mPlacesData2.add("SubTitle3");
mPlacesData1.add("ICD4");
mPlacesData2.add("SubTitle4");
mPlacesData1.add("ICD5");
mPlacesData2.add("SubTitle5");
mPlacesData1.add("ICD6");
mPlacesData2.add("SubTitle6");
mPlacesData1.add("ICD7");
mPlacesData2.add("SubTitle7");
mPlacesData1.add("ICD8");
mPlacesData2.add("SubTitle8");
ListView listView = (ListView) findViewById(R.id.listview);
mPLAdapter = new PlacesListAdapter(CustomListView.this, mPlacesData1, mPlacesData2);
listView.setAdapter(mPLAdapter);
}
}
package resources;
import java.util.ArrayList;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import com.customlistview.R;
public class PlacesListAdapter extends BaseAdapter {
// private Context mContext;
private LayoutInflater mInflater;
private ArrayList<String> AL_id_text = new ArrayList<String>();
private ArrayList<String> AL_text = new ArrayList<String>();
public PlacesListAdapter(Context c, ArrayList<String> AL_name_time,
ArrayList<String> AL_name_time1) {
mInflater = LayoutInflater.from(c);
// mContext = c;
this.AL_id_text = AL_name_time;
this.AL_text = AL_name_time1;
}
public int getCount() {
return AL_id_text.size();
}
public Object getItem(int position) {
return AL_id_text.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
final ViewHolder holder;
if (convertView == null)
{
convertView = mInflater.inflate(R.layout.place_row, null);
holder = new ViewHolder();
holder.txt_maintext = (TextView) convertView
.findViewById(R.id.txt_maintext);
holder.txt_mtext = (TextView) convertView
.findViewById(R.id.txt_mtext);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.txt_maintext.setText(AL_id_text.get(position));
holder.txt_mtext.setText(AL_text.get(position));
return convertView;
}
static class ViewHolder {
TextView txt_maintext;
TextView txt_mtext;
}
}
<?xml version="1.0" encoding="UTF-8"?>
-<LinearLayout android:orientation="vertical" android:layout_height="match_parent" android:layout_width="match_parent" xmlns:android="http://schemas.android.com/apk/res/android"> <ListView android:layout_height="match_parent" android:layout_width="match_parent" android:id="@+id/listview"> </ListView> </LinearLayout>
<?xml version="1.0" encoding="UTF-8"?>
-<LinearLayout android:orientation="vertical" android:layout_height="match_parent" android:layout_width="match_parent" xmlns:android="http://schemas.android.com/apk/res/android"> -<LinearLayout android:orientation="vertical" android:layout_height="70dip" android:layout_width="match_parent" android:id="@+id/lin_main"> <TextView android:layout_height="20dip" android:layout_width="fill_parent" android:id="@+id/txt_maintext" android:singleLine="true" android:paddingRight="5dip" android:paddingLeft="5dip" android:layout_marginTop="5dip" android:textColor="#fff"/> <TextView android:layout_height="20dip" android:layout_width="fill_parent" android:id="@+id/txt_mtext" android:singleLine="true" android:paddingRight="5dip" android:paddingLeft="5dip" android:layout_marginTop="15dip" android:textColor="#fff"/> </LinearLayout> <ImageView android:layout_height="3dip" android:layout_width="match_parent" android:background="#0000ff"/> </LinearLayout>
|
Android Custom ArrayAdapter Not Populating ListView
Date : March 29 2020, 07:55 AM
this will help I am working on an Android app where I need to display a listview of Latin vocabulary words. I have looked over many tutorials and guides and have written custom ArrayAdapters and models but only one item in the list view is populated with the values I am passing it. Here are the pieces of code I feel are relevant. , Change your adapter class like this. public class MyArrayAdapter extends ArrayAdapter<Vocab> {
private int layout;
public MyArrayAdapter(Context context, int resource, ArrayList<Vocab> objects) {
super(context, resource, objects);
layout = resource;
}
private static class ViewHolder {
TextView dict_entry;
TextView definition;
Button add;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder viewHolder = null;
Vocab word = getItem(position);
if(convertView == null){
LayoutInflater inflater = LayoutInflater.from(getContext());
convertView = inflater.inflate(layout, parent, false);
viewHolder = new ViewHolder();
viewHolder.dict_entry = (TextView)convertView.findViewById(R.id.TVdict_entry);
viewHolder.definition = (TextView)convertView.findViewById(R.id.TVdefinition);
viewHolder.add = (Button)convertView.findViewById(R.id.Badd);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder)convertView.getTag();
}
viewHolder.dict_entry.setText(word.dict_entry);
viewHolder.definition.setText(word.definition);
viewHolder.add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getContext(), "Button was clicked for list item " + position, Toast.LENGTH_SHORT).show();
}
});
return convertView;
}
}
|
Android fill listView with custom ArrayAdapter
Tag : java , By : Ivan Kitanovski
Date : March 29 2020, 07:55 AM
wish helps you You can't use Activity's constructor to provide context (as you said in comments NavDrawer is your MainActivity). So change this onCreateView like this. @Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
getActivity().setTitle("Inbox");
myView = inflater.inflate(R.layout.inbox_layout, container, false);
ListView list = (ListView) myView.findViewById(R.id.listViewMyAccount);
inboxCellElement[] elts = new inboxCellElement[] {new inboxCellElement(R.drawable.ic_menu_camera, "Val", "Hi !")};
list.setAdapter(new inboxCellAdapter(getActivity(), R.layout.inbox_cell_layout, elts, (NavDrawer) getActivity()));
return myView;
}
public class inboxCellAdapter extends ArrayAdapter {
inboxCellElement[] elts;
NavDrawer navDrawer;
Activity activity;
// constructor
public inboxCellAdapter(Activity activity, int resource, Object[] objects, NavDrawer navDrawer) {
super(context, resource, objects);
this.activity = activity;
elts = (inboxCellElement[]) objects;
this.navDrawer = navDrawer;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
MyHolder holder = null;
LayoutInflater inflater = activity.getLayoutInflater();
|
Android custom ListView with ArrayAdapter passing boolean
Date : March 29 2020, 07:55 AM
it should still fix some issue I'm new in Android, and I have a problem with sending my boolean flag to my custom ListView class which extends ArrayAdapter... my code: , Apologize for my English. How did you setAdapter()?
|