Android错误:方法setListAdapter(ArrayAdapter<String>) is undefined for the type String

本文解决了在Android开发中使用setListAdapter()方法时遇到的错误。问题在于当前类继承了Activity而非ListActivity,导致方法不可用。通过更改继承类为ListActivity并导入相应包,可以成功解决此问题。

在写一个Android项目的时候      写了一句  setListAdapter()     但是 Eclipse却报错  提示是  

The method setListAdapter(ArrayAdapter<String>) is undefined for the type ...


然后自己就根据提示 百度了一下 问题的原因  和 解决方案 

结果如下:

出问题的原因


当时自己的 当前的class  继承的是 Activity

//   public class MusicServiceActivity extends Activity

然而  setListAdapter() 是 源于 ListActivity 类的一个方法 

所以 当我继承Activity类的时候  会报 setListAdapter方法不能用的错误


以下是问题的解决方法

1.将 extends Activity 改为 ListActivity   
2.import  android.app.ListActivity; 



在这里总结一句  : 如果有报错显示  某一方法未定义的时候  要检查一下 所继承的类中是否有该方法  如果有 就可以排除这个原因  如果没有 就可以按照相关的方法解决问题

 

activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout 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="@android:color/white" android:orientation="vertical"> <RelativeLayout android:layout_width="match_parent" android:layout_height="50dp" android:layout_marginBottom="4dp" android:background="@color/gray" android:gravity="center_vertical"> <TextView android:id="@+id/tv_order" style="@style/tvNavigationBarStyle" android:text="点菜" android:textColor="@android:color/black" /> <TextView android:id="@+id/tv_discuss" style="@style/tvNavigationBarStyle" android:layout_toRightOf="@id/tv_order" android:text="评价" android:textColor="@color/dark_gray" /> <TextView android:id="@+id/tv_business" style="@style/tvNavigationBarStyle" android:layout_toRightOf="@id/tv_discuss" android:text="商家" android:textColor="@color/dark_gray" /> <TextView android:layout_width="70dp" android:layout_height="30dp" android:layout_alignParentRight="true" android:layout_marginRight="15dp" android:background="@drawable/friend_list" android:gravity="center" android:text="好友拼单" android:textColor="#ef842c" android:textSize="12sp" /> </RelativeLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal"> <fragment android:id="@+id/left" android:name="cn.itcast.menu.LeftFragment" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" tools:layout="@layout/left_layout" /> <fragment android:id="@+id/right" android:name="cn.itcast.menu.RightFragment" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="3" tools:layout="@layout/right_layout" /> </LinearLayout> </LinearLayout> left_layout.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#f7f8f9" android:gravity="center_horizontal" android:orientation="vertical"> <TextView android:id="@+id/tv_recommend" style="@style/tvLeftStyle" android:text="推荐" android:background="@android:color/white"/> <TextView android:id="@+id/tv_must_buy" style="@style/tvLeftStyle" android:text="进店必买" /> </LinearLayout> list_item.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:padding="4dp"> <ImageView android:id="@+id/iv_img" android:layout_width="70dp" android:layout_height="70dp" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:orientation="vertical"> <TextView android:id="@+id/tv_name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="2dp" android:textColor="@android:color/black" android:textSize="14sp" /> <TextView android:id="@+id/tv_sale" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="#868788" android:textSize="12sp" /> <TextView android:id="@+id/tv_price" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="2dp" android:textColor="#e85b4d" android:textSize="12sp" /> </LinearLayout> </LinearLayout> right_layout.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/white" android:orientation="vertical"> <ListView android:id="@+id/lv_list" android:layout_width="match_parent" android:layout_height="wrap_content" android:divider="@null"/> </LinearLayout> FoodBean.java package cn.itcast.menu; import java.io.Serializable; public class FoodBean implements Serializable { //序列化时保持FoodBean类版本的兼容性 private static final long serialVersionUID = 1L; private String name; //菜品名称 private String sales; //月售信息 private String price; //菜品价格 private int img; //菜品图片 public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSales() { return sales; } public void setSales(String sales) { this.sales = sales; } public String getPrice() { return price; } public void setPrice(String price) { this.price = price; } public int getImg() { return img; } public void setImg(int img) { this.img = img; } } LeftFragment.java import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class LeftFragment extends Fragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view =inflater.inflate(R.layout.left_layout,container,false); return view; } @Override public void onPause() { super.onPause(); } } RightAdapter.java import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import java.util.List; public class RightAdapter extends BaseAdapter { private Context mContext; private List<FoodBean> list; public RightAdapter(Context context ,List<FoodBean> list) { this.mContext = context; this.list=list; } @Override public int getCount() { //获取列表条目的总数 return list.size(); //返回ListView 条目的总数 } @Override public Object getItem(int position) { return list.get(position); //返回列表条目的数据对象 } @Override public long getItemId(int position) { return position; //返回列表条目的id } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { convertView = View.inflate(mContext, R.layout.list_item, null); holder = new ViewHolder(); holder.tv_name = convertView.findViewById(R.id.tv_name); holder.tv_sale = convertView.findViewById(R.id.tv_sale); holder.tv_price = convertView.findViewById(R.id.tv_price); holder.iv_img = convertView.findViewById(R.id.iv_img); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } FoodBean bean=list.get(position); holder.tv_name.setText(bean.getName()); holder.tv_sale.setText(bean.getSales()); holder.tv_price.setText(bean.getPrice()); holder.iv_img.setBackgroundResource(bean.getImg()); return convertView; } class ViewHolder { TextView tv_name, tv_sale,tv_price; ImageView iv_img; } } RightFragment.java import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ListView; import java.io.Serializable; import java.util.List; public class RightFragment extends Fragment { private ListView lv_list; public RightFragment() { } public RightFragment getInstance(List<FoodBean> list) { RightFragment rightFragment = new RightFragment(); //通过Bundle对象传递数据可以保证在设备横竖屏切换时传递的数据不丢失 Bundle bundle = new Bundle(); //将需要传递的字符串以键值对的形式传入bundle对象 bundle.putSerializable("list", (Serializable) list); rightFragment.setArguments(bundle); return rightFragment; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.right_layout, container, false); lv_list = view.findViewById(R.id.lv_list); if (getArguments() != null) { List<FoodBean> list = (List<FoodBean>) getArguments(). getSerializable("list"); RightAdapter adapter = new RightAdapter(getActivity(), list); lv_list.setAdapter(adapter); } return view; } } MainActivity.java import android.app.FragmentManager; import android.app.FragmentTransaction; import android.graphics.Color; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.TextView; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; public class MainActivity extends AppCompatActivity { private FragmentManager fragmentManager; private FragmentTransaction fragmentTransaction; private LeftFragment leftFragment; private TextView tv_recommend, tv_must_buy; private RightFragment rightFragment; //推荐菜单列表数据 private String[] names1 = {"爆款*肥牛鱼豆腐骨肉相连三荤五素一份米饭", "豪华双人套餐", "【热销】双人套餐(含两份米饭)"}; private String[] sales1 = {"月售520 好评度80%", "月售184 好评度68%", "月售114 好评度60%"}; private String[] prices1 = {"¥23", "¥41", "¥32"}; private int[] imgs1 = {R.drawable.recom_one, R.drawable.recom_two, R.drawable.recom_three}; //进店必买菜单列表数据 private String[] names2 = {"'蔬菜主义'1人套餐", "2人经典套餐", "3人经典套餐"}; private String[] sales2 = {"月售26 好评度70%", "月售12 好评度50%", "月售4 好评度40%"}; private String[] prices2 = {"¥44", "¥132", "¥180"}; private int[] imgs2 = {R.drawable.must_buy_one, R.drawable.must_buy_two, R.drawable.must_buy_three}; private Map<String,List<FoodBean>> map; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); setData(); init(); clickEvent(); } private void init() { fragmentManager = getFragmentManager();//获取fragmentManager //通过findFragmentById()方法获取leftFragment leftFragment = (LeftFragment) fragmentManager.findFragmentById(R.id.left); //获取左侧菜单栏中的控件 tv_recommend = leftFragment.getView().findViewById(R.id.tv_recommend); tv_must_buy = leftFragment.getView().findViewById(R.id.tv_must_buy); } private void setData(){ map=new HashMap<>(); List<FoodBean> list1=new ArrayList<>(); List<FoodBean> list2=new ArrayList<>(); for (int i=0;i<names1.length;i++){ FoodBean bean=new FoodBean(); bean.setName(names1[i]); bean.setSales(sales1[i]); bean.setPrice(prices1[i]); bean.setImg(imgs1[i]); list1.add(bean); } map.put("1",list1);//将推荐菜单列表的数据添加到map集合中 for (int i=0;i<names2.length;i++){ FoodBean bean=new FoodBean(); bean.setName(names2[i]); bean.setSales(sales2[i]); bean.setPrice(prices2[i]); bean.setImg(imgs2[i]); list2.add(bean); } map.put("2",list2); //将进店必买菜单列表的数据添加到map集合中 } private void clickEvent() { tv_recommend.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //调用switchData()方法填充Rightfragment中的数据 switchData(map.get("1")); tv_recommend.setBackgroundColor(Color.WHITE); tv_must_buy.setBackgroundResource(R.color.gray); } }); tv_must_buy.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { switchData(map.get("2")); tv_must_buy.setBackgroundColor(Color.WHITE); tv_recommend.setBackgroundResource(R.color.gray); } }); //设置首次进入界面后,默认需要显示的数据 switchData(map.get("1")); } /** * 填充Activity右侧的Fragment,并传递列表数据list */ public void switchData(List<FoodBean> list) { fragmentManager = getFragmentManager(); fragmentTransaction = fragmentManager.beginTransaction();//开启一个事务 //通过调用getInstance()方法实例化RightFragment rightFragment = new RightFragment().getInstance(list); //调用replace()方法 fragmentTransaction.replace(R.id.right, rightFragment); fragmentTransaction.commit(); } } 说明如何编写列表显示的代码
最新发布
11-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值