我有一個JsonObject,我試圖傳遞給我的CustomListView,我已經讀過類似於此的其他線程,但沒有任何工作。我有一個簡單的JSONObject產生這種輸出android:我如何從自定義列表適配器中讀取Jsonobject
{ 「localstreams」:[{ 「人」: 「約翰」, 「郵報」: 「我的第一篇文章」}]}
,然後我通過到我的列表視圖SetAdapter。問題是我完全沒有錯誤,並且活動顯示爲空白事件,儘管我可以看到它正在形成JsonObject。我的代碼是容易複製,它是這個..
LocalFeed.Java
public class LocalFeed extends Activity
{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.local_feed);
try {
ListView lv=(ListView)findViewById(R.id.localfeed);
JSONObject json = new JSONObject();
JSONArray array = new JSONArray();
JSONObject item = new JSONObject();
item.put("post", "My first post");
item.put("people", "John");
array.put(item);
json.put("localstreams", array);
DemoLocalFeed DMF=new DemoLocalFeed(json,this);
lv.setAdapter(DMF);
} catch (Exception e) {
System.err.println("failed: "+ e.getMessage());
e.printStackTrace();
}
}
}
與此相關的活動是local_feed.xml
<RelativeLayout 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"
tools:context="com.exoler.LocalFeed"
android:id="@+id/LocalFeed">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/localfeed"
android:layout_centerHorizontal="true" />
這是我的自定義列表適配器是 DemoLocalFeed.java
public class DemoLocalFeed extends BaseAdapter {
JSONObject names;
Context ctx;
LayoutInflater myiflater;
public DemoLocalFeed(JSONObject arr,Context c)
{
ctx=c;
names=arr;
myiflater= (LayoutInflater)c.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return names.length();
}
@Override
public Object getItem(int position) {
return 1;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView==null)
{
try {
convertView = myiflater.inflate(R.layout.customadapter, null);
TextView posts = (TextView) convertView.findViewById(R.id.posts);
TextView people= (TextView) convertView.findViewById(R.id.people);
JSONArray jArray = new JSONArray("localstreams");
String postss="";
String peoples="";
for(int i=0; i < jArray.length(); i++) {
postss= names.getString("post");
peoples= names.getString("people");
}
posts.setText(postss);
people.setText(peoples);
return convertView;
}
catch (Exception e) {
e.printStackTrace();
}
}
return convertView;
}
}
和它的活動customadapter.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000099"
android:textAppearance="?android:attr/textAppearanceMedium"
android:id="@+id/posts" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000099"
android:textAppearance="?android:attr/textAppearanceMedium"
android:id="@+id/people" />
</LinearLayout>
在這之前表示不給我一個錯誤,它只是表明了在相比之下ListView的空白,如果我改變的JSONObject轉換成String [ ]然後ListView得到填充。我已閱讀關於此主題的其他主題,例如Android JSONObject to ListView,但無法使其工作。我認爲我靠近,但似乎無法找出什麼是不工作的任何建議將是偉大的..
犯了錯,嘗試用編輯。 –