Java 数据未在列表中填充,Android
我正在尝试使用异步任务填充片段listview, 但listvew并没有普及。我正在日志中获取数据,日志中没有错误和异常 我遵循这个例子 以下是代码:-Java 数据未在列表中填充,Android,java,android,android-listview,Java,Android,Android Listview,我正在尝试使用异步任务填充片段listview, 但listvew并没有普及。我正在日志中获取数据,日志中没有错误和异常 我遵循这个例子 以下是代码:- public class HindiFragment extends Fragment { // XML node keys static final String KEY_SONG = "song"; // parent node static final String
public class HindiFragment extends Fragment {
// XML node keys
static final String KEY_SONG = "song"; // parent node
static final String KEY_ID = "id";
static final String KEY_TITLE = "title";
static final String KEY_ARTIST = "artist";
static final String KEY_DURATION = "duration";
static final String KEY_THUMB_URL = "thumb_url";
static final String KEY_VIDEO_URL = "video";
static final String KEY_UPLOAD_BY = "upload_by";
Context abc=null;
static int startIndex = 0;
private WeakReference<MyAsyncTask> asyncTaskWeakRef;
ListView list;
static LazyAdapter adapter;
JSONObject json;
static int offset = 10;
static ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
public static Context hindiFragment=null;
private static int catId=0;
static View rootView ;
public HindiFragment(){}
public HindiFragment(int position) {
// TODO Auto-generated constructor stub
catId=position;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
//StrictMode.setThreadPolicy(policy);
rootView = inflater.inflate(R.layout.main, container, false);
// TextView tvLabel = (TextView)rootView.findViewById(R.id.txtLabel);
// tvLabel.setText("Hello"); try
hindiFragment=rootView.getContext();
try{
//Toast.makeText(hindiFragment, "catid is "+catId,
// Toast.LENGTH_LONG).show();
UserFunctions userFunction = new UserFunctions();
json=userFunction.getAndroidVersion();
JSONArray android_version_array = json.getJSONArray("version");
TextView tv = (TextView) rootView.findViewById(R.id.android_version);
//getting android version
for (int i = 0; i < android_version_array.length(); i++) {
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
JSONObject myObj = android_version_array.getJSONObject(i);
if(! myObj.getString("version").equalsIgnoreCase(String.valueOf(getString(R.string.android_version)))){
tv.setText( Html.fromHtml(myObj.getString("text")));
tv.setMovementMethod(LinkMovementMethod.getInstance());
}else
{
tv.setVisibility(View.GONE);
}
// adding each child node to HashMap key => value
}
startNewAsyncTask(this.getActivity());
return rootView;
}catch(Exception e){
e.printStackTrace();
}
return rootView;
}
public static void loadMore(int startIndex,int page,Activity myActivity){
try{
UserFunctions userFunction = new UserFunctions();
Log.e("page ",""+page);
int status=0;
JSONObject json;
json = userFunction.getChannelData(String.valueOf(catId),page);
if(json.has("video")){
JSONArray deletedtrs_array = json.getJSONArray("video");
for (int i = 0; i < deletedtrs_array.length(); i++) {
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
JSONObject myObj = deletedtrs_array.getJSONObject(i);
// adding each child node to HashMap key => value
map.put(KEY_ID, myObj.getString("uid"));
map.put(KEY_TITLE, myObj.getString("uid"));
map.put(KEY_ARTIST,myObj.getString("video"));
map.put(KEY_DURATION, myObj.getString("duration"));
map.put(KEY_THUMB_URL,myObj.getString("thumb_url"));
map.put(KEY_VIDEO_URL, myObj.getString("url"));
map.put(KEY_UPLOAD_BY,"By: "+ myObj.getString("upload_by"));
// adding HashList to ArrayList
//if(!songsList.contains(map))
{
songsList.add(map);
status=1;
}
}
}
//if(status==1)
{
//]list=(ListView)rootView.findViewById(R.id.list);
// Getting adapter by passing xml data ArrayList
// adapter=new LazyAdapter(myActivity, songsList);
// list.setAdapter(adapter);
// adapter.notifyDataSetChanged();
}
}catch(Exception e){
e.printStackTrace();
}
}
private void startNewAsyncTask(Activity act) {
MyAsyncTask asyncTask = new MyAsyncTask(act);
this.asyncTaskWeakRef = new WeakReference<MyAsyncTask >(asyncTask );
asyncTask.execute();
}
private static class MyAsyncTask extends AsyncTask<Void, Void, Void> {
private WeakReference<HindiFragment> fragmentWeakRef;
HindiFragment uindiFragment;
Activity myActivity;
private MyAsyncTask (Activity activity) {
this.fragmentWeakRef = new WeakReference<HindiFragment>(uindiFragment);
myActivity=activity;
}
@Override
protected Void doInBackground(Void... params) {
//Toast.makeText(hindiFragment, "helllo",
// Toast.LENGTH_LONG).show();
//TODO: your background code
Log.e("Now in background",offset+"");
loadMore(startIndex, offset,myActivity);
return null;
}
@Override
protected void onPostExecute(Void response) {
super.onPostExecute(response);
ListView list=(ListView)rootView.findViewById(R.id.list);
// Getting adapter by passing xml data ArrayList
adapter=new LazyAdapter(myActivity, songsList);
list.setAdapter(adapter);
adapter.notifyDataSetChanged();
Log.e("Ended here11 ","now endeded11");
if (this.fragmentWeakRef.get() != null) {
//TODO: treat the result
adapter.notifyDataSetChanged();
}
}
}
}
公共类HindiFragment扩展片段{
//XML节点密钥
静态最终字符串键\u SONG=“SONG”//父节点
静态最终字符串键\u ID=“ID”;
静态最终字符串键\u TITLE=“TITLE”;
静态最终字符串键\u ARTIST=“ARTIST”;
静态最终字符串键\u DURATION=“DURATION”;
静态最终字符串键\u THUMB\u URL=“THUMB\u URL”;
静态最终字符串键\u VIDEO\u URL=“VIDEO”;
静态最终字符串键\u UPLOAD\u BY=“UPLOAD\u BY”;
上下文abc=null;
静态int startIndex=0;
私有WeakReference异步任务weakref;
列表视图列表;
静态懒散适配器;
JSONObject json;
静态整数偏移=10;
静态ArrayList songsList=新ArrayList();
公共静态上下文hindiFragment=null;
私有静态int catId=0;
静态视图rootView;
公共HindiFragment(){}
公共障碍物(内部位置){
//TODO自动生成的构造函数存根
catId=位置;
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//StrictMode.ThreadPolicy policy=新建StrictMode.ThreadPolicy.Builder().permitAll().build();
//StrictMode.setThreadPolicy(策略);
rootView=充气机。充气(右布局主,容器,假);
//TextView tVBLabel=(TextView)rootView.findViewById(R.id.txtLabel);
//tvblabel.setText(“你好”);试试看
hindiFragment=rootView.getContext();
试一试{
//Toast.makeText(hindiFragment,“catid是”+catid,
//Toast.LENGTH_LONG).show();
UserFunctions userFunction=新的UserFunctions();
json=userFunction.getAndroidVersion();
JSONArray android_version_array=json.getJSONArray(“version”);
TextView tv=(TextView)rootView.findviewbyd(R.id.android\u版本);
//获取android版本
for(int i=0;ivalue
}
startNewAsyncTask(this.getActivity());
返回rootView;
}捕获(例外e){
e、 printStackTrace();
}
返回rootView;
}
公共静态void loadMore(int startIndex,int page,Activity myActivity){
试一试{
UserFunctions userFunction=新的UserFunctions();
Log.e(“第页”,“第+页”);
int status=0;
JSONObject json;
json=userFunction.getChannelData(String.valueOf(catId),第页);
if(json.has(“视频”)){
JSONArray deletedtrs_array=json.getJSONArray(“视频”);
对于(int i=0;ivalue
map.put(KEY_ID,myObj.getString(“uid”);
map.put(KEY_TITLE,myObj.getString(“uid”);
map.put(KEY_ARTIST,myObj.getString(“视频”);
map.put(KEY_DURATION,myObj.getString(“DURATION”);
put(KEY_THUMB_URL,myObj.getString(“THUMB_URL”));
map.put(KEY_VIDEO_URL,myObj.getString(“URL”);
map.put(KEY_UPLOAD_BY,“BY:”+myObj.getString(“UPLOAD_BY”));
//将哈希列表添加到ArrayList
//如果(!songsList.contains(map))
{
歌曲列表。添加(地图);
状态=1;
}
}
}
//如果(状态==1)
{
//]list=(ListView)rootView.findViewById(R.id.list);
//通过传递xml数据ArrayList获取适配器
//adapter=新的LazyAdapter(myActivity,songsList);
//list.setAdapter(适配器);
//adapter.notifyDataSetChanged();
}
}捕获(例外e){
e、 printStackTrace();
}
}
私有无效startNewAsyncTask(活动法案){
MyAsyncTask asyncTask=新的MyAsyncTask(act);
this.asynctaskwakref=新的WeakReference(asyncTask);
asyncTask.execute();
}
私有静态类MyAsyncTask扩展了AsyncTask{
私人组织参考碎片组织;
后肢碎片;
活动我的活动;
私有MyAsyncTask(活动){
this.fragmentWeakRef=新的WeakReference(uindiFragment);
我的活动=活动;
}
@凌驾
受保护的Void doInBackground(Void…参数){
//Toast.makeText(hindiFragment,
protected void onPostExecute(Void response) {
super.onPostExecute(response);
ListView list=(ListView)rootView.findViewById(R.id.list);
// Getting adapter by passing xml data ArrayList
adapter=new LazyAdapter(myActivity, songsList);
list.setAdapter(adapter);
adapter.notifyDataSetChanged();
...
}