Java 自定义阵列适配器未在listview中显示数据
这是我的Java 自定义阵列适配器未在listview中显示数据,java,android,listview,android-fragments,android-arrayadapter,Java,Android,Listview,Android Fragments,Android Arrayadapter,这是我的wordAdapter。当我打开片段时,它没有显示任何结果。请帮助我,因为我是一个android开发新手。片段页面为空,运行时也没有显示任何错误。所以,请告诉我我遗漏了什么,这段代码有什么问题 public class wordAdapter extends ArrayAdapter<word> { private Context context; private List<word> wrd; private SharedPreferen
wordAdapter
。当我打开片段时,它没有显示任何结果。请帮助我,因为我是一个android开发新手。片段
页面为空,运行时也没有显示任何错误。所以,请告诉我我遗漏了什么,这段代码有什么问题
public class wordAdapter extends ArrayAdapter<word> {
private Context context;
private List<word> wrd;
private SharedPreference sharedPreference;
public wordAdapter(Context context, List<word> wrd) {
super(context, R.layout.item, wrd);
this.context = context;
this.wrd = wrd;
sharedPreference = new SharedPreference();
}
private class ViewHolder {
TextView productNameTxt;
TextView productTypeTxt;
ImageView favoriteImg;
}
@Override
public int getCount() {
return wrd.size();
}
@Override
public word getItem(int position) {
return wrd.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder = null;
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.item, null);
holder = new ViewHolder();
holder.productNameTxt = (TextView) convertView
.findViewById(R.id.carname);
holder.productTypeTxt = (TextView) convertView
.findViewById(R.id.cartype);
holder.favoriteImg = (ImageView) convertView
.findViewById(R.id.favu);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
word wrdn = (word) getItem(position);
holder.productNameTxt.setText(wrdn.getName());
holder.productTypeTxt.setText(wrdn.getType());
/*If a product exists in shared preferences then set heart_red drawable
* and set a tag*/
if (checkFavoriteItem(wrdn)) {
holder.favoriteImg.setImageResource(R.drawable.fav);
holder.favoriteImg.setTag("red");
} else {
holder.favoriteImg.setImageResource(R.drawable.unfav);
holder.favoriteImg.setTag("grey");
}
return convertView;
}
/*Checks whether a particular product exists in SharedPreferences*/
private boolean checkFavoriteItem(word checkwrdn) {
boolean check = false;
List<word> favorites = sharedPreference.getFavorites(context);
if (favorites != null) {
for (word wrdn : favorites) {
if (wrdn.equals(checkwrdn)) {
check = true;
break;
}
}
}
return check;
}
@Override
public void add(word wrdn) {
super.add(wrdn);
wrd.add(wrdn);
notifyDataSetChanged();
}
@Override
public void remove(word wrdn) {
super.remove(wrdn);
wrd.remove(wrdn);
notifyDataSetChanged();
}
}
这是我的片段
文件和数据
public class Cars extends android.support.v4.app.Fragment implements
AdapterView.OnItemClickListener,
AdapterView.OnItemLongClickListener {
public static final String ARG_PAGE = "ARG_PAGE";
public static Favourites newInstance(int page) {
Bundle args = new Bundle();
args.putInt(ARG_PAGE, page);
Favourites fragment = new Favourites();
fragment.setArguments(args);
return fragment;
}
Activity activity;
ListView productListView;
List<word> wrds;
wordAdapter wrdAdapter;
SharedPreference sharedPreference;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
activity = getActivity();
sharedPreference = new SharedPreference();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.list, container,
false);
findViewsById(view);
setProducts();
wrdAdapter = new wordAdapter(activity, wrds);
productListView.setAdapter(wrdAdapter);
productListView.setOnItemClickListener(this);
productListView.setOnItemLongClickListener(this);
return view;
}
private void setProducts() {
word product1 = new word("Lamborghini Huracan", "Sport");
word product2 = new word("Lamborghini Aventador", "Sport");
word product3 = new word("Jaguar XF", "Luxury Sedan");
word product4 = new word("Audi A4", "Luxury Sedan");
word product5 = new word("Ferrari 488", "Sport");
word product6 = new word("BMW i8", "Hybrid Sport");
word product7 = new word("Audi TT", "Sport");
wrds = new ArrayList<word>();
wrds.add(product1);
wrds.add(product2);
wrds.add(product3);
wrds.add(product4);
wrds.add(product5);
wrds.add(product6);
wrds.add(product7);
}
private void findViewsById(View view) {
productListView = (ListView) view.findViewById(R.id.list_product);
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
word product = (word) parent.getItemAtPosition(position);
Toast.makeText(activity, product.toString(), Toast.LENGTH_LONG).show();
}
@Override
public boolean onItemLongClick(AdapterView<?> arg0, View view,
int position, long arg3) {
ImageView button = (ImageView) view.findViewById(R.id.favu);
String tag = button.getTag().toString();
if (tag.equalsIgnoreCase("grey")) {
sharedPreference.addFavorite(activity, wrds.get(position));
button.setTag("red");
button.setImageResource(R.drawable.fav);
} else {
sharedPreference.removeFavorite(activity, wrds.get(position));
button.setTag("grey");
button.setImageResource(R.drawable.unfav);
}
return true;
}
@Override
public void onResume() {
getActivity().setTitle(R.string.app_name);
getActivity().getActionBar().setTitle(R.string.app_name);
super.onResume();
}
}
public-class-Cars扩展了android.support.v4.app.app
AdapterView.OnItemClickListener,
AdapterView.OnItemLongClickListener{
公共静态最终字符串ARG\u PAGE=“ARG\u PAGE”;
公共静态收藏夹newInstance(int页){
Bundle args=新Bundle();
args.putInt(ARG_页,第页);
收藏夹片段=新收藏夹();
fragment.setArguments(args);
返回片段;
}
活动;
ListView产品ListView;
列表WRD;
字适配器;
SharedReference SharedReference;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
activity=getActivity();
SharedReference=新的SharedReference();
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(右布局列表,容器,
假);
FindViewById(视图);
setProducts();
wrdAdapter=新字适配器(活动,wrds);
setAdapter(wrdAdapter);
productListView.setOnItemClickListener(此);
productListView.setOnItemLongClickListener(此);
返回视图;
}
私有产品(){
word product1=新词(“兰博基尼胡拉坎”、“运动”);
word product2=新词(“兰博基尼大道”、“运动”);
单词product3=新词(“捷豹XF”、“豪华轿车”);
单词product4=新词(“奥迪A4”,“豪华轿车”);
单词product5=新词(“法拉利488”,“运动”);
word product6=新词(“宝马i8”、“混合动力运动”);
单词product7=新单词(“奥迪TT”、“运动”);
wrds=新的ArrayList();
新增(产品1);
新增(产品2);
新增(产品3);
新增(产品4);
新增(产品5);
新增(产品6);
新增(产品7);
}
私有void findViewsById(视图){
productListView=(ListView)view.findViewById(R.id.list\u产品);
}
@凌驾
public void onItemClick(AdapterView父视图、视图、整型位置、,
长id){
word product=(word)parent.getItemAtPosition(position);
Toast.makeText(活动,product.toString(),Toast.LENGTH_LONG).show();
}
@凌驾
长单击(AdapterView arg0,视图,
整数位置,长arg3){
ImageView按钮=(ImageView)view.findViewById(R.id.favu);
字符串标记=button.getTag().toString();
if(标记为“灰色”){
sharedReference.addFavorite(活动,wrds.get(位置));
按钮。设置标签(“红色”);
按钮.setImageResource(R.drawable.fav);
}否则{
SharedReference.removeFavorite(活动,wrds.get(位置));
按钮。设置标签(“灰色”);
按钮.setImageResource(R.drawable.unav);
}
返回true;
}
@凌驾
恢复时公开作废(){
getActivity().setTitle(R.string.app_name);
getActivity().getActionBar().setTitle(R.string.app_name);
super.onResume();
}
}
这是我的列表视图
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#EDEDED" >
<ListView
android:id="@+id/list_product"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:dividerHeight="10dp"
android:drawSelectorOnTop="true"
android:footerDividersEnabled="false"
android:padding="10dp"
android:scrollbarStyle="outsideOverlay" >
</ListView>
</RelativeLayout>
这是项目视图
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:descendantFocusability="blocksDescendants" >
<RelativeLayout
android:id="@+id/pdt_layout_item"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/carname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="6dp" />
<TextView
android:id="@+id/cartype"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/carname"
android:padding="6dp" />
<ImageView
android:id="@+id/favu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginRight="3dp"
android:background="@null" />
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_below="@id/pdt_layout_item"/>
</RelativeLayout>
请添加列表
布局。无需存储私人列表wrd代码>因为ArrayAdapter为您做这件事。我认为您覆盖了太多的方法。@ReazMurshed好的,我将添加列表布局。。然后请看我如何解决这个问题@RadekJ所以,兄弟,根据你我应该做什么,我的意思是我应该添加或删除什么??我会将数据传递给默认构造函数(ArrayAdapter(上下文上下文、int资源、列表对象)
)并只覆盖getView
。请添加List
布局。不需要存储private List wrd代码>因为ArrayAdapter为您做这件事。我认为您覆盖了太多的方法。@ReazMurshed好的,我将添加列表布局。。然后请看我如何解决这个问题@RadekJ所以,兄弟,根据你的说法,我应该做什么,我的意思是我应该添加或删除什么?我会将数据传递给默认构造函数(ArrayAdapter(上下文上下文、int资源、列表对象)
),并只覆盖getView
)。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:descendantFocusability="blocksDescendants" >
<RelativeLayout
android:id="@+id/pdt_layout_item"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/carname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="6dp" />
<TextView
android:id="@+id/cartype"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/carname"
android:padding="6dp" />
<ImageView
android:id="@+id/favu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginRight="3dp"
android:background="@null" />
</RelativeLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:layout_below="@id/pdt_layout_item"/>
</RelativeLayout>