Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.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 如何将数据放入XML的ListView?_Java_Android_Xml_Listview - Fatal编程技术网

Java 如何将数据放入XML的ListView?

Java 如何将数据放入XML的ListView?,java,android,xml,listview,Java,Android,Xml,Listview,我刚刚开始学习Android,我正在尝试创建一个简单的视图,其中主XML的一部分是listview 这是我的main.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_heigh

我刚刚开始学习Android,我正在尝试创建一个简单的视图,其中主XML的一部分是listview

这是我的main.xml

<?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">


    <RelativeLayout
        android:layout_width="100dp"
        android:layout_height="match_parent"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:id="@+id/Menu">

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/menu_item_1"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="129dp" />

    </RelativeLayout>

    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:layout_toEndOf="@+id/Menu"
        android:layout_toRightOf="@+id/Menu"
        android:layout_alignParentTop="true"
        android:id="@+id/Banner">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:text="Account Log"
            android:layout_gravity="center"
            android:inputType="none"
            android:textStyle="bold"/>
    </FrameLayout>

    <ListView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/Log"
        android:layout_toRightOf="@+id/Menu"
        android:layout_below="@+id/Banner"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:choiceMode="none"
        android:clickable="false"
        android:contextClickable="true"
        android:fadeScrollbars="true" />

</RelativeLayout>

假设我有一个名为
getDatafromFile()
的函数,它返回数据的数组列表,那么如何将这些数据放入我的listView


我听说过使用ArrayAdapter,但我看到的示例将ListView放到了整个布局中。

创建列表视图的完整代码

public class MainActivity extends AppCompatActivity {

ArrayList<String>arrayList=new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main); //here is the layout where your views exists

    for (int i=0;i<=20;i++){
        arrayList.add("List Items"+i);   //assume we passed the data in arraylist
    }
    ListView listView=(ListView)findViewById(R.id.log); //your listview

    ArrayAdapter arrayAdapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,arrayList);//the second argument is a layout file that have a textview

    listView.setAdapter(arrayAdapter);



}
}
public类MainActivity扩展了AppCompatActivity{
ArrayList=新的ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);//这是视图所在的布局

对于(int i=0;i创建列表视图的完整代码

public class MainActivity extends AppCompatActivity {

ArrayList<String>arrayList=new ArrayList<>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main); //here is the layout where your views exists

    for (int i=0;i<=20;i++){
        arrayList.add("List Items"+i);   //assume we passed the data in arraylist
    }
    ListView listView=(ListView)findViewById(R.id.log); //your listview

    ArrayAdapter arrayAdapter=new ArrayAdapter(this,android.R.layout.simple_list_item_1,arrayList);//the second argument is a layout file that have a textview

    listView.setAdapter(arrayAdapter);



}
}
public类MainActivity扩展了AppCompatActivity{
ArrayList=新的ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);//这是视图所在的布局

对于(int i=0;i将数据放入ListView的最佳方法是创建ArrayAdapter类。我始终建议您尝试使用自定义适配器类,以便可以根据需要进行更改。您可以创建一个扩展ArrayAdapter的类。然后将列表视图中所需的arraylist传递给该适配器构造函数。 例如,下面是一个自定义适配器类

public class CustomAdapter extends ArrayAdapter<DataInfo> {


ArrayList<DataInfo> itemList =new ArrayList<>();
Context context;
LayoutInflater inflater;
public CustomAdapte(Context context, ArrayList<VegInfo> list) {
    super(context, R.layout.list_item, list);
    this.context = context;
    itemList = list;
    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {

    //getting an item from the list
    DataInfo item = itemList.get(position);
    if(convertView==null)
        convertView = inflater.inflate(R.layout.list_item,parent,false);

        //displaying some data from your data info in a textview
    TextView textView = (TextView) convertView.findViewById(R.id.tv);
    textView.setText(item.subitem);


    return convertView;
}
}
现在,列表视图中的数据位于数组列表中。每当数组列表中有更改时,只要调用

yourAdapter.notifydatasetchanged();
这里列表项是一个自定义XML文件,您应该为单个列表项视图创建该文件


希望这对您有所帮助。如果没有,请告诉我,让我说得更清楚。愉快的编码。

将数据放入ListView的最佳方法是创建ArrayAdapter类。我始终建议您尝试使用自定义适配器类,以便您可以根据需要进行更改。您可以创建一个扩展ArrayAdapter的类。然后通过将列表视图中所需的arraylist添加到该适配器构造函数中。 例如,下面是一个自定义适配器类

public class CustomAdapter extends ArrayAdapter<DataInfo> {


ArrayList<DataInfo> itemList =new ArrayList<>();
Context context;
LayoutInflater inflater;
public CustomAdapte(Context context, ArrayList<VegInfo> list) {
    super(context, R.layout.list_item, list);
    this.context = context;
    itemList = list;
    inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {

    //getting an item from the list
    DataInfo item = itemList.get(position);
    if(convertView==null)
        convertView = inflater.inflate(R.layout.list_item,parent,false);

        //displaying some data from your data info in a textview
    TextView textView = (TextView) convertView.findViewById(R.id.tv);
    textView.setText(item.subitem);


    return convertView;
}
}
现在,列表视图中的数据位于数组列表中。每当数组列表中有更改时,只要调用

yourAdapter.notifydatasetchanged();
这里列表项是一个自定义XML文件,您应该为单个列表项视图创建该文件


希望这对你有帮助。如果没有,请告诉我,让我说得更清楚。快乐编码。

我知道我听起来有点迟钝,但我还必须使用
setContentView
?那么
simple\u list\u item1
做什么呢?我知道我听起来有点迟钝,但我还必须使用
setContentView
?那么
simple\u list\u item1
做什么呢o?非常感谢您提供的详细示例!我只想知道
SaleAdapter
是什么?以及
R.layout.list\u item
R.layout.salelist\u item
来自何处?这是我项目中的一个复制粘贴错误。我已将其更改为list\u item。请立即检查。是的:)我可以更改
SaleAdapter
R.layout.list\u item
的名称吗?当然可以,这也是我的错误。我更改了它。:)现在越来越清楚了,谢谢!
R.layout.list\u item
意味着我已经在R中创建了
list\u item
,但我找不到代码中发生的地方:(非常感谢您提供的详细示例!我只想知道
SaleAdapter
是什么?以及
R.layout.list\u item
R.layout.salelist\u item
来自何处?这是我项目中的一个复制粘贴错误。我已将其更改为list\u item。请立即检查。是的:)我可以更改
SaleAdapter
R.layout.list\u item
的名称吗?当然可以,这也是我的错误。我更改了它。:)现在越来越清楚了,谢谢!
R.layout.list\u item
意味着我已经在R中创建了
list\u item
,但我找不到代码中发生的地方:(