Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android-将字符串数组值加载到自定义列表视图适配器_Java_Android_Listview_Custom Adapter - Fatal编程技术网

Java Android-将字符串数组值加载到自定义列表视图适配器

Java Android-将字符串数组值加载到自定义列表视图适配器,java,android,listview,custom-adapter,Java,Android,Listview,Custom Adapter,我已经创建了一个自定义列表视图适配器,列表视图的项存储在String.xml中。当我运行应用程序时,我只显示一个空白活动 请帮我解决这个问题 这是我的自定义适配器java类 public class UserAdapter extends ArrayAdapter<User> { public UserAdapter(Context context, ArrayList<User> users, String[] number) { super(context,

我已经创建了一个自定义列表视图适配器,列表视图的项存储在String.xml中。当我运行应用程序时,我只显示一个空白活动

请帮我解决这个问题

这是我的自定义适配器java类

public class UserAdapter extends ArrayAdapter<User> {
public UserAdapter(Context context, ArrayList<User> users, String[] number) {
    super(context, 0, users);
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    User user = getItem(position);

    if (convertView == null) {
        convertView = LayoutInflater.from(getContext()).inflate(R.layout.listview_singlerow, parent, false);
    }

    TextView tvName = (TextView) convertView.findViewById(R.id.org_name);
    TextView tvNum = (TextView) convertView.findViewById(R.id.cn_num);
    // Populate the data into the template view using the data object
    tvName.setText(user.company_name);
    tvNum.setText(user.contact_num);
    return convertView;
}}
将适配器附加到视图的主活动类

public class activity_one extends Activity {

String[] number;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity1);



 number = getResources().getStringArray(R.array.dummy_data);

    ArrayList<User> arrayOfUsers = new ArrayList<User>();

    UserAdapter adapter = new UserAdapter(this, arrayOfUsers,number);

    ListView listView = (ListView) findViewById(R.id.listView2);
    listView.setAdapter(adapter);



}}
公共类活动\u扩展活动{
字符串[]编号;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity1);
number=getResources().getStringArray(R.array.dummy_数据);
ArrayList ArrayFuser=新的ArrayList();
UserAdapter=新的UserAdapter(此,ArrayFuser,编号);
ListView ListView=(ListView)findViewById(R.id.listView2);
setAdapter(适配器);
}}

由于我不能百分之百确定您想要做什么,我将向您展示我的一段代码,您可以从中推断出您需要什么。 My
DrawerListAdapter
是一个自定义的
ListView
适配器,该列表中的每个项目都由3个对象组成:一个
String
name、
String
imageurl、
String
description

public class DrawerListAdapter extends ArrayAdapter<String> {

private final static int settingsCount = 4; // can ignore this
private Activity context;
// Next 3 lines: All data required for this adapter
private static ArrayList<String> itemname = null;
private static ArrayList<String> imgid;
private static ArrayList<String> itemDescription;

public DrawerListAdapter(Activity context, ArrayList<String> itemname, ArrayList<String> itemDescription, ArrayList<String> imgid) {
    // R.layout.drawer_list_item is a layout that represents ONE item
    // (not 100% sure, but i think the super class inflates this view itemname.size() times)
    super(context, R.layout.drawer_list_item, itemname);

    this.context=context;
    // saving the required data
    DrawerListAdapter.itemDescription = itemDescription;
    DrawerListAdapter.itemname=itemname;
    DrawerListAdapter.imgid=imgid;
}

@Override
public View getView(int position,View view,ViewGroup parent) {
    LayoutInflater inflater=context.getLayoutInflater();
    View rowView=inflater.inflate(R.layout.drawer_list_item, null,true);
    // the views that are present in R.layout.drawer_list_item
    TextView txtTitle = (TextView) rowView.findViewById(R.id.tvName);
    ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
    TextView extratxt = (TextView) rowView.findViewById(R.id.tvDescription);

    txtTitle.setText(itemname.get(position));
    extratxt.setText(itemDescription.get(position));
    // setting the image here of the list item here
    if (position < settingsCount) {
        imageView.setImageResource(Integer.parseInt(imgid.get(position)));
    } else {
        Glide.with(context).load(imgid.get(position)).into(imageView);
    }
    return rowView;

};
// need to override the getCount. this function just returns the amount of items in your list
 @Override
 public int getCount(){
     if (itemname != null)
       return itemname.size();
     return 0;
 }
public类drawerlistatadapter扩展了ArrayAdapter{
private final static int settingscont=4;//可以忽略此设置
私人活动语境;
//接下来3行:此适配器所需的所有数据
私有静态ArrayList itemname=null;
私有静态数组列表imgid;
私有静态ArrayList itemDescription;
公共抽屉列表适配器(活动上下文、ArrayList itemname、ArrayList itemDescription、ArrayList imgid){
//R.layout.drawer\u list\u项是表示一个项的布局
//(不是100%确定,但我认为超级类将这个视图itemname.size()膨胀了两倍)
super(上下文、右布局、抽屉列表、项目名称);
this.context=context;
//保存所需的数据
DroperListAdapter.itemDescription=itemDescription;
DroperListAdapter.itemname=itemname;
drawerlistatadapter.imgid=imgid;
}
@凌驾
公共视图getView(内部位置、视图视图、视图组父视图){
LayoutInflater充气器=上下文。getLayoutInflater();
视图行视图=充气机。充气(R.layout.drawer\u list\u项,null,true);
//R.layout.drawer\u列表\u项中存在的视图
TextView txtTitle=(TextView)rowView.findViewById(R.id.tvName);
ImageView ImageView=(ImageView)rowView.findViewById(R.id.icon);
TextView extratxt=(TextView)rowView.findViewById(R.id.tvDescription);
setText(itemname.get(position));
setText(itemsdescription.get(position));
//在此处设置列表项的图像
如果(位置<设定值){
setImageResource(Integer.parseInt(imgid.get(position));
}否则{
使用(上下文)滑动。加载(imgid.get(position))。到(imageView);
}
返回行视图;
};
//需要覆盖getCount。此函数仅返回列表中的项目数量
@凌驾
public int getCount(){
if(itemname!=null)
返回itemname.size();
返回0;
}
这是通过以下方式初始化的:

     private void init() {
     mDrawerList = (ListView) findViewById(R.id.left_drawer);
     if (adapter == null) {
         ArrayList<String> itemname = new ArrayList<String>();
            itemname.add("item1");
            itemname.add("item2");
            itemname.add("item3");
            itemname.add("item4");

            ArrayList<String> imgid = new ArrayList<String>();
            imgid.add(R.drawable.pic1 + "");
            imgid.add(R.drawable.pic2 + "");
            imgid.add(R.drawable.pic4 + "");
            imgid.add(R.drawable.pic3 + "");

            ArrayList<String> itemDescription = new ArrayList<String>();
            itemDescription.add("desc1");
            itemDescription.add("desc2");
            itemDescription.add("desc3");
            itemDescription.add("desc4");


            adapter=new DrawerListAdapter(this, itemname, itemDescription, imgid);
            setOnItemClickListener(); // sets onClick for each item on the list
     }

     mDrawerList.setAdapter(adapter);
 }
private void init(){
mDrawerList=(ListView)findViewById(R.id.left\u抽屉);
if(适配器==null){
ArrayList itemname=新的ArrayList();
项目名称。添加(“项目1”);
项目名称。添加(“项目2”);
项目名称。添加(“项目3”);
项目名称。添加(“项目4”);
ArrayList imgid=新的ArrayList();
imgid.add(R.drawable.pic1+“”);
imgid.add(R.drawable.pic2+);
imgid.add(R.drawable.pic4+);
imgid.add(R.drawable.pic3+);
ArrayList itemDescription=新建ArrayList();
项目说明。添加(“说明1”);
项目说明。添加(“说明2”);
项目说明。添加(“说明3”);
项目说明。添加(“说明4”);
adapter=新的抽屉状态适配器(this、itemname、itemsdescription、imgid);
setOnItemClickListener();//为列表中的每个项目设置onClick
}
mDrawerList.setAdapter(适配器);
}
和drawer_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" >

<ImageView
    android:id="@+id/icon"
    android:layout_width="60dp"
    android:layout_height="60dp"
    android:padding="5dp" />

<LinearLayout android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">

<TextView
    android:id="@+id/tvName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dp"
    android:layout_marginTop="5dp"
    android:padding="2dp"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:textColor="#429bd9" />

<TextView
    android:id="@+id/tvDescription"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginLeft="10dp"
    android:maxLines="2"
    android:textColor="#79e5a4" />

</LinearLayout>


由于我不能100%确定您想要做什么,我将向您展示我的一段代码,您可以从中推断出您需要什么。 My
DrawerListAdapter
是一个自定义的
ListView
适配器,该列表中的每个项目都由3个对象组成:一个
String
name、
String
imageurl、
String
description

public class DrawerListAdapter extends ArrayAdapter<String> {

private final static int settingsCount = 4; // can ignore this
private Activity context;
// Next 3 lines: All data required for this adapter
private static ArrayList<String> itemname = null;
private static ArrayList<String> imgid;
private static ArrayList<String> itemDescription;

public DrawerListAdapter(Activity context, ArrayList<String> itemname, ArrayList<String> itemDescription, ArrayList<String> imgid) {
    // R.layout.drawer_list_item is a layout that represents ONE item
    // (not 100% sure, but i think the super class inflates this view itemname.size() times)
    super(context, R.layout.drawer_list_item, itemname);

    this.context=context;
    // saving the required data
    DrawerListAdapter.itemDescription = itemDescription;
    DrawerListAdapter.itemname=itemname;
    DrawerListAdapter.imgid=imgid;
}

@Override
public View getView(int position,View view,ViewGroup parent) {
    LayoutInflater inflater=context.getLayoutInflater();
    View rowView=inflater.inflate(R.layout.drawer_list_item, null,true);
    // the views that are present in R.layout.drawer_list_item
    TextView txtTitle = (TextView) rowView.findViewById(R.id.tvName);
    ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
    TextView extratxt = (TextView) rowView.findViewById(R.id.tvDescription);

    txtTitle.setText(itemname.get(position));
    extratxt.setText(itemDescription.get(position));
    // setting the image here of the list item here
    if (position < settingsCount) {
        imageView.setImageResource(Integer.parseInt(imgid.get(position)));
    } else {
        Glide.with(context).load(imgid.get(position)).into(imageView);
    }
    return rowView;

};
// need to override the getCount. this function just returns the amount of items in your list
 @Override
 public int getCount(){
     if (itemname != null)
       return itemname.size();
     return 0;
 }
public类drawerlistatadapter扩展了ArrayAdapter{
private final static int settingscont=4;//可以忽略此设置
私人活动语境;
//接下来3行:此适配器所需的所有数据
私有静态ArrayList itemname=null;
私有静态数组列表imgid;
私有静态ArrayList itemDescription;
公共抽屉列表适配器(活动上下文、ArrayList itemname、ArrayList itemDescription、ArrayList imgid){
//R.layout.drawer\u list\u项是表示一个项的布局
//(不是100%确定,但我认为超级类将这个视图itemname.size()膨胀了两倍)
super(上下文、右布局、抽屉列表、项目名称);
this.context=context;
//保存所需的数据
DroperListAdapter.itemDescription=itemDescription;
DroperListAdapter.itemname=itemname;
drawerlistatadapter.imgid=imgid;
}
@凌驾
公共视图getView(内部位置、视图视图、视图组父视图){
LayoutInflater充气器=上下文。getLayoutInflater();
视图行视图=充气机。充气(R.layout.drawer\u list\u项,null,true);
//R.layout.drawer\u列表\u项中存在的视图
TextView txtTitle=(TextView)rowView.findViewById(R.id.tvName);
ImageView ImageView=(ImageView)rowView.findViewById(R.id.icon);
TextView extratxt=(TextView)rowView.findViewById(R.id.tvDescription);
setText(itemname.get(position));
extratxt.setText(itemsdescription.get(posit