Android Listview未在搜索时更新
我正在Android中创建我的第一个列表视图。我已经成功地查询了一个api,获得了结果,并将它们放在它们自己的对象中,然后将每个对象添加到数组列表中。这一切我都做得很好,但名单没有更新 在这里,我从返回的json中获取数据,并将项目添加到列表中,然后尝试更新我的列表视图: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++) {
//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如果有帮助,我已将评论转换为答案,请接受答案。使用此链接:使用此链接: