Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.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
Java 带有ArrayAdapter的Android ListView没有显示任何内容_Java_Android_Listview - Fatal编程技术网

Java 带有ArrayAdapter的Android ListView没有显示任何内容

Java 带有ArrayAdapter的Android ListView没有显示任何内容,java,android,listview,Java,Android,Listview,我知道有很多关于如何制作Android ListView的帖子,但即使浏览了其中的大部分,我也不知道我的问题是什么。我对Android完全陌生,显然有点不知所措。活动运行,但不显示任何内容 这是我的活动: package com.example.myfirstapp; import android.app.Activity; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; imp

我知道有很多关于如何制作Android ListView的帖子,但即使浏览了其中的大部分,我也不知道我的问题是什么。我对Android完全陌生,显然有点不知所措。活动运行,但不显示任何内容

这是我的活动:

package com.example.myfirstapp;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ListView;

public class HistoryActivity extends Activity {

CustomRowAdapter customRowAdapter;  
ListView listView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_history);

    listView = (ListView)findViewById(R.id.listView);
    customRowAdapter = new CustomRowAdapter(getApplicationContext());
    listView.setAdapter(customRowAdapter);

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.history, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}
}
这是activity_history.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:orientation="vertical"> 

<ListView
    android:id="@+id/listView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

</LinearLayout>
ListView custom_row.xml中输入的xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:orientation="vertical"> 

 <TextView
    android:id="@+id/textView1"
    android:background="@drawable/box"
    android:textSize="18sp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/app_name" />

 <TextView
    android:id="@+id/textView2"
    android:background="@drawable/box"
    android:textSize="18sp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/app_name" />

 <TextView
    android:id="@+id/textView3"
    android:background="@drawable/box"
    android:textSize="18sp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="@string/app_name" />

</LinearLayout>
和CustomRowAdapter.java:

package com.example.myfirstapp;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;

public class CustomRowAdapter extends ArrayAdapter<String> {

private String[] text1 = {
        "Google Plus",
        "Twitter", 
        "Facebook", 
        "Instagram"};

private String[] text2 = {
        "test1",
        "test2", 
        "test3", 
        "test4"};

private String[] text3 = {
        "Google Plus",
        "Twitter", 
        "Facebook", 
        "Instagram"};

private LayoutInflater layoutInflater;
private Context context;

public CustomRowAdapter(Context context) {
    super(context,0);
    layoutInflater=    (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    this.context=context;


}
@Override
public View getView(int position, View view, ViewGroup viewGroup){
    view = layoutInflater.inflate(R.layout.custom_row,null);
    TextView textViewT1 = (TextView)view.findViewById(R.id.textView1);
    TextView textViewT2 = (TextView)view.findViewById(R.id.textView2);
    TextView textViewT3 = (TextView)view.findViewById(R.id.textView3);

//      textViewT1.setText("test");
//      textViewT2.setText(text2[0]);
//      textViewT3.setText(text3[0]);


    return view; 
}

@Override
public int getCount(){
    return 0;
}       
}

希望有人能帮助我。

您正在从getCount返回0。在此处返回列表中的项目数,我怀疑您需要类似text1.length的内容。

您从getCount返回了0。在此处返回列表中的项目数,我怀疑您需要类似text1.length的内容。

您的ListView没有显示任何内容,因为

@Override
public int getCount(){
    return 0;
}  
getCount必须返回属于数据集的元素数。比如说

 @Override
    public int getCount(){
        return text1.length;
    }  

您的ListView没有显示任何内容,因为

@Override
public int getCount(){
    return 0;
}  
getCount必须返回属于数据集的元素数。比如说

 @Override
    public int getCount(){
        return text1.length;
    }  

嘿,我看到了我的简单和最好的例子,遵循一些步骤

我主要使用自定义测试

JSON解析 第一步

JSONParser.java

  public class JSONParser {
  InputStream is = null;
  JSONObject jObj = null;
  String json = "";

  // constructor
 public JSONParser() {
 }

  public String getJSONFromUrl(String url) {

 // Making HTTP request
 try {

   DefaultHttpClient httpClient = new DefaultHttpClient();
   HttpPost httpPost = new HttpPost(url);
   HttpResponse httpResponse = httpClient.execute(httpPost);
   Log.e("response", "" + httpResponse);

   HttpEntity httpEntity = httpResponse.getEntity();
   is = httpEntity.getContent();

   } catch (UnsupportedEncodingException e) {
   e.printStackTrace();
   } catch (ClientProtocolException e) {
  e.printStackTrace();
} catch (IOException e) {
 e.printStackTrace();
}
try {
 BufferedReader reader = new BufferedReader(new InputStreamReader(
 is, "iso-8859-1"), 8);
 StringBuilder sb = new StringBuilder();
  String line = null;
 while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
 }
  json = sb.toString();
 is.close();
 } catch (Exception e) {
 Log.e("Buffer Error", "Error converting result " + e.toString());
 }
 return json;
 }


 }
9月2日

MainHome.java

   public class MainActivity extends Activity {

ListView lvdata;
LinkedList<HashMap<String, String>> aldata = new LinkedList<HashMap<String, String>>();

@Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();

 new getData().execute();
 }

 void init() {
 lvdata = (ListView) findViewById(R.id.lvdata);

 }

private class getData extends AsyncTask<Void, Void, String> {
 Dialog dialog;
String url;

@Override
   protected void onPreExecute() {
 super.onPreExecute();

 }

@Override
protected String doInBackground(Void... params) {
  url = "Enter your url";

 JSONParser jParser = new JSONParser();
 String json = jParser.getJSONFromUrl(url);
 try {
  JSONObject jobject = new JSONObject(json);

  int success = jobject.getInt("success");

  for (int i = 0; i < jobject.length() - 1; i++) {
   JSONObject jobj = jobject
   .getJSONObject(Integer.toString(i));
   if (success == 1) {
    HashMap<String, String> hm = new HashMap<String, String>();

    hm.put("p_name", jobj.getString("p_name"));
    hm.put("p_title", jobj.getString("p_title"));
    aldata.add(hm);
   }
  }
 } catch (JSONException e) {
  e.printStackTrace();
 }
   return null;

}

@Override
 protected void onPostExecute(String result) {
 super.onPostExecute(result);
 if (dialog != null)
  if (dialog.isShowing())
 dialog.dismiss();
 Custom_Adapter adapter = new Custom_Adapter(
 (Activity) MainActivity.this, aldata);
 lvdata.setAdapter(adapter);
}
 }

  }
自定义适配器 自定义适配器.java

public class Custom_Adapter extends ArrayAdapter<HashMap<String, String>> {

private final Activity context;
 private final LinkedList<HashMap<String, String>> allData;

public Custom_Adapter(Activity context,
 LinkedList<HashMap<String, String>> list) {
super(context, R.layout.custom_list, list);
 this.context = context;

this.allData = list;
}

static class ViewHolder {

TextView tvname, tvinfo;

}

@Override
 public View getView(int position, View convertView, ViewGroup parent) {
 View view = convertView;
view = null;
if (view == null) {
 LayoutInflater inflator = context.getLayoutInflater();
 view = inflator.inflate(R.layout.custom_list, null);
 final ViewHolder viewHolder = new ViewHolder();
 initAll(view, viewHolder);
 view.setTag(viewHolder);
 }
 ViewHolder holder = (ViewHolder) view.getTag();
 fillAll(holder, position);
return view;

  }

public void initAll(View view, ViewHolder viewHolder) {

viewHolder.tvname = (TextView) view.findViewById(R.id.tvname);

viewHolder.tvinfo = (TextView) view.findViewById(R.id.tvinfo);

}

public void fillAll(final ViewHolder holder, final int position) {

holder.tvname.setText(allData.get(position).get("p_name"));
holder.tvinfo.setText(allData.get(position).get("p_title"));

 }

}

嘿,我看到了我的简单和最好的例子,遵循一些步骤

我主要使用自定义测试

JSON解析 第一步

JSONParser.java

  public class JSONParser {
  InputStream is = null;
  JSONObject jObj = null;
  String json = "";

  // constructor
 public JSONParser() {
 }

  public String getJSONFromUrl(String url) {

 // Making HTTP request
 try {

   DefaultHttpClient httpClient = new DefaultHttpClient();
   HttpPost httpPost = new HttpPost(url);
   HttpResponse httpResponse = httpClient.execute(httpPost);
   Log.e("response", "" + httpResponse);

   HttpEntity httpEntity = httpResponse.getEntity();
   is = httpEntity.getContent();

   } catch (UnsupportedEncodingException e) {
   e.printStackTrace();
   } catch (ClientProtocolException e) {
  e.printStackTrace();
} catch (IOException e) {
 e.printStackTrace();
}
try {
 BufferedReader reader = new BufferedReader(new InputStreamReader(
 is, "iso-8859-1"), 8);
 StringBuilder sb = new StringBuilder();
  String line = null;
 while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
 }
  json = sb.toString();
 is.close();
 } catch (Exception e) {
 Log.e("Buffer Error", "Error converting result " + e.toString());
 }
 return json;
 }


 }
9月2日

MainHome.java

   public class MainActivity extends Activity {

ListView lvdata;
LinkedList<HashMap<String, String>> aldata = new LinkedList<HashMap<String, String>>();

@Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
init();

 new getData().execute();
 }

 void init() {
 lvdata = (ListView) findViewById(R.id.lvdata);

 }

private class getData extends AsyncTask<Void, Void, String> {
 Dialog dialog;
String url;

@Override
   protected void onPreExecute() {
 super.onPreExecute();

 }

@Override
protected String doInBackground(Void... params) {
  url = "Enter your url";

 JSONParser jParser = new JSONParser();
 String json = jParser.getJSONFromUrl(url);
 try {
  JSONObject jobject = new JSONObject(json);

  int success = jobject.getInt("success");

  for (int i = 0; i < jobject.length() - 1; i++) {
   JSONObject jobj = jobject
   .getJSONObject(Integer.toString(i));
   if (success == 1) {
    HashMap<String, String> hm = new HashMap<String, String>();

    hm.put("p_name", jobj.getString("p_name"));
    hm.put("p_title", jobj.getString("p_title"));
    aldata.add(hm);
   }
  }
 } catch (JSONException e) {
  e.printStackTrace();
 }
   return null;

}

@Override
 protected void onPostExecute(String result) {
 super.onPostExecute(result);
 if (dialog != null)
  if (dialog.isShowing())
 dialog.dismiss();
 Custom_Adapter adapter = new Custom_Adapter(
 (Activity) MainActivity.this, aldata);
 lvdata.setAdapter(adapter);
}
 }

  }
自定义适配器 自定义适配器.java

public class Custom_Adapter extends ArrayAdapter<HashMap<String, String>> {

private final Activity context;
 private final LinkedList<HashMap<String, String>> allData;

public Custom_Adapter(Activity context,
 LinkedList<HashMap<String, String>> list) {
super(context, R.layout.custom_list, list);
 this.context = context;

this.allData = list;
}

static class ViewHolder {

TextView tvname, tvinfo;

}

@Override
 public View getView(int position, View convertView, ViewGroup parent) {
 View view = convertView;
view = null;
if (view == null) {
 LayoutInflater inflator = context.getLayoutInflater();
 view = inflator.inflate(R.layout.custom_list, null);
 final ViewHolder viewHolder = new ViewHolder();
 initAll(view, viewHolder);
 view.setTag(viewHolder);
 }
 ViewHolder holder = (ViewHolder) view.getTag();
 fillAll(holder, position);
return view;

  }

public void initAll(View view, ViewHolder viewHolder) {

viewHolder.tvname = (TextView) view.findViewById(R.id.tvname);

viewHolder.tvinfo = (TextView) view.findViewById(R.id.tvinfo);

}

public void fillAll(final ViewHolder holder, final int position) {

holder.tvname.setText(allData.get(position).get("p_name"));
holder.tvinfo.setText(allData.get(position).get("p_title"));

 }

}

@重写公共int getCount{return 0;}。。。为什么???@Override public int getCount{return 0;}。。。为什么?哇。太快了。谢谢。事实上,我忽略了这个方法,因为它没有在任何地方被调用。这是内部调用吗?它是怎么工作的?哇。太快了。谢谢。事实上,我忽略了这个方法,因为它没有在任何地方被调用。这是内部调用吗?它是如何工作的?