Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/226.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
Android Listview未在搜索时更新_Android_Android Listview_Android Xml - Fatal编程技术网

Android Listview未在搜索时更新

Android Listview未在搜索时更新,android,android-listview,android-xml,Android,Android Listview,Android Xml,我正在Android中创建我的第一个列表视图。我已经成功地查询了一个api,获得了结果,并将它们放在它们自己的对象中,然后将每个对象添加到数组列表中。这一切我都做得很好,但名单没有更新 在这里,我从返回的json中获取数据,并将项目添加到列表中,然后尝试更新我的列表视图: //get json items for(int i = 0; i < json.getJSONArray("data").length(); i++) {

我正在Android中创建我的第一个列表视图。我已经成功地查询了一个api,获得了结果,并将它们放在它们自己的对象中,然后将每个对象添加到数组列表中。这一切我都做得很好,但名单没有更新

在这里,我从返回的json中获取数据,并将项目添加到列表中,然后尝试更新我的列表视图:

//get json items
                for(int i = 0; i < json.getJSONArray("data").length(); i++) {

                    String beerId = GetBeerDataFromJSON(i,"id", json);
                    String beerName = GetBeerDataFromJSON(i,"name", json);
                    String beerDescription = GetBeerDataFromJSON(i,"description" , json);
                    String beerAbv = GetBeerDataFromJSON(i,"abv" , json);
                    String beerIbu = GetBeerDataFromJSON(i,"ibu" , json);
                    String beerIcon = GetBeerIconsFromJSON(i, "icon",json );
                    String beerMediumIcon = GetBeerIconsFromJSON(i, "medium",json );
                    String beerGlass = GetBeerGlassFromJSON(i, json );
                    String beerStyle = GetBeerStyleFromJSON(i,"name", json );
                    String beerStyleDescription = GetBeerStyleFromJSON(i,"description", json );
                    String beerBreweryId = GetBeerBreweryInfoFromJSON(i, "id", json );
                    String beerBreweryName = GetBeerBreweryInfoFromJSON(i, "name", json );
                    String beerBreweryDescription = GetBeerBreweryInfoFromJSON(i, "description", json );
                    String beerBreweryWebsite = GetBeerBreweryInfoFromJSON(i, "website", json );
                    String beerBreweryYear = GetBeerBreweryInfoFromJSON(i, "established", json );



                    //create beer object
                    BeerData thisBeer = new BeerData(beerName, beerId, beerDescription, beerAbv, beerIbu, beerIcon,
                            beerMediumIcon, beerGlass, beerStyle, beerStyleDescription, beerBreweryId, beerBreweryName,
                            beerBreweryDescription, beerBreweryYear, beerBreweryWebsite);

                    //add beer to list
                    beerList.add(thisBeer);


                }

                //update listview

                ArrayAdapter<BeerData> arrayAdapter = new ArrayAdapter<BeerData>(MainActivity.this,R.layout.list_item);

                lv.setAdapter(arrayAdapter);

您需要在字符串数组中传递列表数据

//Fill this array with strings that can be shown in the list
String[] arrStrBeerData;

ArrayAdapter<BeerData> alAdapter = new ArrayAdapter<BeerData>(context, textViewResourceId, arrStrBeerData);
lv.setAdapter(arrayAdapter);
//用列表中显示的字符串填充此数组
字符串[]arrStrBeerData;
ArrayAdapter alAdapter=新的ArrayAdapter(上下文、textViewResourceId、arrStrBeerData);
低压设置适配器(阵列适配器);


您可以通过扩展BaseAdapter来创建自定义适配器,将数据传递给适配器

您需要传递字符串数组中的列表数据

//Fill this array with strings that can be shown in the list
String[] arrStrBeerData;

ArrayAdapter<BeerData> alAdapter = new ArrayAdapter<BeerData>(context, textViewResourceId, arrStrBeerData);
lv.setAdapter(arrayAdapter);
//用列表中显示的字符串填充此数组
字符串[]arrStrBeerData;
ArrayAdapter alAdapter=新的ArrayAdapter(上下文、textViewResourceId、arrStrBeerData);
低压设置适配器(阵列适配器);


您可以通过扩展BaseAdapter来创建自定义适配器,将数据传递给适配器,您在哪里使用beerlist在列表视图中显示它

尝试使用不同的数组适配器构造函数,并选择将列表放在构造函数中。 例如:像这样
ArrayAdapter ArrayAdapter=新的ArrayAdapter(MainActivity.this,R.layout.list_项,beerList)

您在哪里使用beerlist在列表视图中显示它

尝试使用不同的数组适配器构造函数,并选择将列表放在构造函数中。 例如:像这样
ArrayAdapter ArrayAdapter=新的ArrayAdapter(MainActivity.this,R.layout.list_项,beerList)

使用适配器设置tha阵列

ArrayAdapter<BeerData> arrayAdapter = new ArrayAdapter<BeerData>(MainActivity.this,R.layout.list_item, beerList);

      lv.setAdapter(arrayAdapter);
ArrayAdapter ArrayAdapter=新的ArrayAdapter(MainActivity.this,R.layout.list_项,beerList);
低压设置适配器(阵列适配器);

设置带适配器的tha阵列

ArrayAdapter<BeerData> arrayAdapter = new ArrayAdapter<BeerData>(MainActivity.this,R.layout.list_item, beerList);

      lv.setAdapter(arrayAdapter);
ArrayAdapter ArrayAdapter=新的ArrayAdapter(MainActivity.this,R.layout.list_项,beerList);
低压设置适配器(阵列适配器);

我看到了你前面的问题,与上面的问题相关

您的类应该扩展
活动

您的listitem.xml如下所示

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

<TextView android:id="@+id/itemName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"/>

</LinearLayout>

适当地使用ArrayAdapter构造函数

ArrayAdapter<BeerData> adapter1 = new ArrayAdapter<BeerData>(MainActivity.this, R.layout.listitem, R.id.itemname, beerlist);
ArrayAdapter适配器1=新的ArrayAdapter(MainActivity.this、R.layout.listitem、R.id.itemname、beerlist);
此外,在您的评论中,您还说您正在获取未定义的arrayadapter构造函数。这是因为您使用的是
This
。使用类似于
MainActivity.this的活动上下文

有关更多信息,请查看下面的链接


我已经看到了你前面的问题,它与上面的问题相关

您的类应该扩展
活动

您的listitem.xml如下所示

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

<TextView android:id="@+id/itemName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_weight="1"/>

</LinearLayout>

适当地使用ArrayAdapter构造函数

ArrayAdapter<BeerData> adapter1 = new ArrayAdapter<BeerData>(MainActivity.this, R.layout.listitem, R.id.itemname, beerlist);
ArrayAdapter适配器1=新的ArrayAdapter(MainActivity.this、R.layout.listitem、R.id.itemname、beerlist);
此外,在您的评论中,您还说您正在获取未定义的arrayadapter构造函数。这是因为您使用的是
This
。使用类似于
MainActivity.this的活动上下文

有关更多信息,请查看下面的链接


从上一个问题开始,您是否扩展了listactivity的活动?.MainActivity扩展了listactivity扩展了activity not list activity并使用beerlist将数据设置到ListView从上一个问题开始,您是否扩展了listactivity?MainActivity扩展了listactivity not list activity并使用beerlist将数据设置到ListView将数据设置为ListView是有意义的,因为我没有传递任何数据,所以它。。。但我现在遇到了这个错误:android.R.layout.list\u项将此项与中的适配器一起使用adapter@MikeArrayAdapter adapter1=新的ArrayAdapter(this,R.layout.row,R.id.textView1,beerlist);使用id为textview 1的textview定义row.xml,并将适配器设置为listview@Mike不要使用
这个
活动名称。这个
@Mike如果有帮助的话,我已经将评论转换为答案,请接受答案。这很有意义,因为我没有传递任何数据给它。。。但我现在遇到了这个错误:android.R.layout.list\u项将此项与中的适配器一起使用adapter@MikeArrayAdapter adapter1=新的ArrayAdapter(this,R.layout.row,R.id.textView1,beerlist);使用id为textview 1的textview定义row.xml,并将适配器设置为listview@Mike不要使用
使用
活动名称。此
@Mike如果有帮助,我已将评论转换为答案,请接受答案。使用此链接:使用此链接: