2015-10-20 69 views
0

我通过PHP获取数据并设置为列表视图.. 首先我打开应用程序,listview将显示出来,但在调用完成并重新打开应用程序之后,列表视图不会出现,需要调用刷新,使其重新出现..ListView在调用finish()后没有出现,并重新打开

FeedAdapter:以列表视图

public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) { 
    View v = inflater.inflate(R.layout.tab_1, container, false); 

    tweetListView = (ListView) v.findViewById(R.id.tweetList); 


     urlString = "http://idonno.net/G.php"; //json url 
     new ProcessJSON().execute(urlString); 
     tweetItemArrayAdapter = new FeedAdapter(getActivity(), localmovies); 
    tweetListView.setAdapter(tweetItemArrayAdapter); 

return v; 


} 
+0

你的后台任务后通知适配器完成接受的答案也是分开的AsyncTask? –

+0

不...我刚刚添加,但无法运行...我应该通知? –

+0

我想你使用的是AsyncTask。你只需要通知JSON解析过程并添加对象到arraylist完成(OnPostExecute) –

回答

1
public View getView(int position, View convertView, ViewGroup parent){ 


    View row = inflater.inflate(R.layout.row_feed, parent, false); 
    TextView username = (TextView) row.findViewById(R.id.txtUsername); 

    MovieFeed moviefeed = localmovies.get(position); 

    username.setText(moviefeed.getUsername()); 


    return row; 
} 

TAB1片段您应该实现一个asyncTask,并确保在实例化listview之前确实拥有数据。就像这个例子中的匿名内部类一样。

@Override 
protected void onPostExecute(String result){ 
    progressDialog.dismiss(); 
    runOnUiThread(new Runnable(){ 
     public void run(){ 
      final ListView lv1 = (ListView) findViewById(R.id.listings); 
      lv1.setAdapter(new CustomListAdapter(YourActivity.this, shares)); 
     } 
    }); 

} 

如果您随时更新列表,请在适配器上拨打notifyDataSetChanged()

你可以像这个问题How to get the result of OnPostExecute() to main activity because AsyncTask is a separate class?

+1

谢谢,我刚刚移动了我的tweetItemArrayAdapter = new FeedAdapter(getActivity(),localmovies); tweetListView.setAdapter(tweetItemArrayAdapter);从onCreate到onPostexecute,问题已经解决了。TQ这么多 –

相关问题