Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.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 Android ListView为空_Java_Android_Listview_Baseadapter - Fatal编程技术网

Java Android ListView为空

Java Android ListView为空,java,android,listview,baseadapter,Java,Android,Listview,Baseadapter,我有ListView。我正在使用BaseAdapter来扩大列表。I列表不包含任何数据。列表可见,但列表中没有数据。 这是我的 CustomAdapter.java public class CustomAdapter extends BaseAdapter { ArrayList<ModelString> list; ListView lv; private Context context; DbHelper dbHelper; private LayoutInflater in

我有ListView。我正在使用BaseAdapter来扩大列表。I列表不包含任何数据。列表可见,但列表中没有数据。 这是我的

CustomAdapter.java

public class CustomAdapter extends BaseAdapter {

ArrayList<ModelString> list;
ListView lv;
private Context context;
DbHelper dbHelper;
private LayoutInflater inflater = null;

public CustomAdapter(Context context, ArrayList<ModelString> result){

    this.list=result;
    this.context = context;
    dbHelper = new DbHelper(context);
    inflater = (LayoutInflater) (this.context)
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}


@Override
public int getCount() {

    return list.size();
}

@Override
public Object getItem(int position) {

    return position;
}

@Override
public long getItemId(int position) {

    return position;
}

class Holder {

    public TextView textView1,textView2;

}

@Override
public View getView(int position, View rootView, ViewGroup parent) {

    final ModelString tempData = list.get(position);
    //Holder h = new Holder();
    Holder h = null;
    if (rootView == null){

        rootView = inflater.inflate(R.layout.row, null);
        h = new Holder();
        h.textView1 = (TextView) rootView.findViewById(R.id.mainTextView);
        h.textView2 = (TextView) rootView.findViewById(R.id.subTextView);
        rootView.setTag(h);

    } else {

        h = (Holder) rootView.getTag();

    }

    h.textView1.setText(tempData.busScheduleAt);
    h.textView2.setText(tempData.sourceDestination);

    return rootView;
}
}
public class YouAreAt extends Activity {

ListView stopsList;
EditText searchEditText;

ArrayList<ModelString> addList;
CustomAdapter myAdapter;

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

    final DbHelper dbHelper = new DbHelper(this);

    stopsList = (ListView)findViewById(R.id.stopsList);
    searchEditText = (EditText)findViewById(R.id.searchEditText);

    addList = new ArrayList<ModelString>();
    addList = dbHelper.getAllData("1");
    myAdapter = new CustomAdapter(this, addList);
    myAdapter.notifyDataSetChanged();
    stopsList.setAdapter(myAdapter);
}
}
公共类CustomAdapter扩展了BaseAdapter{
数组列表;
ListView lv;
私人语境;
DbHelper-DbHelper;
专用充气机=空;
公共CustomAdapter(上下文、ArrayList结果){
这个.list=结果;
this.context=上下文;
dbHelper=新的dbHelper(上下文);
充气器=(充气器)(this.context)
.getSystemService(上下文布局\充气机\服务);
}
@凌驾
public int getCount(){
返回list.size();
}
@凌驾
公共对象getItem(int位置){
返回位置;
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
阶级持有者{
公共文本视图文本视图1、文本视图2;
}
@凌驾
公共视图getView(int位置、视图根视图、视图组父视图){
最终模型字符串tempData=list.get(位置);
//保持架h=新保持架();
持有者h=null;
if(rootView==null){
rootView=充气机充气(R.layout.row,空);
h=新支架();
h、 textView1=(TextView)rootView.findViewById(R.id.mainTextView);
h、 textView2=(TextView)rootView.findViewById(R.id.subTextView);
setTag(h);
}否则{
h=(Holder)rootView.getTag();
}
h、 textView1.setText(tempData.buscheduleat);
h、 textView2.setText(tempData.sourceDestination);
返回rootView;
}
}
这是我的活动类,我的列表是空的

YouAreAt.java

public class CustomAdapter extends BaseAdapter {

ArrayList<ModelString> list;
ListView lv;
private Context context;
DbHelper dbHelper;
private LayoutInflater inflater = null;

public CustomAdapter(Context context, ArrayList<ModelString> result){

    this.list=result;
    this.context = context;
    dbHelper = new DbHelper(context);
    inflater = (LayoutInflater) (this.context)
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}


@Override
public int getCount() {

    return list.size();
}

@Override
public Object getItem(int position) {

    return position;
}

@Override
public long getItemId(int position) {

    return position;
}

class Holder {

    public TextView textView1,textView2;

}

@Override
public View getView(int position, View rootView, ViewGroup parent) {

    final ModelString tempData = list.get(position);
    //Holder h = new Holder();
    Holder h = null;
    if (rootView == null){

        rootView = inflater.inflate(R.layout.row, null);
        h = new Holder();
        h.textView1 = (TextView) rootView.findViewById(R.id.mainTextView);
        h.textView2 = (TextView) rootView.findViewById(R.id.subTextView);
        rootView.setTag(h);

    } else {

        h = (Holder) rootView.getTag();

    }

    h.textView1.setText(tempData.busScheduleAt);
    h.textView2.setText(tempData.sourceDestination);

    return rootView;
}
}
public class YouAreAt extends Activity {

ListView stopsList;
EditText searchEditText;

ArrayList<ModelString> addList;
CustomAdapter myAdapter;

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

    final DbHelper dbHelper = new DbHelper(this);

    stopsList = (ListView)findViewById(R.id.stopsList);
    searchEditText = (EditText)findViewById(R.id.searchEditText);

    addList = new ArrayList<ModelString>();
    addList = dbHelper.getAllData("1");
    myAdapter = new CustomAdapter(this, addList);
    myAdapter.notifyDataSetChanged();
    stopsList.setAdapter(myAdapter);
}
}
公共类YouAreAt扩展活动{
列表视图停止列表;
编辑文本搜索编辑文本;
ArrayList地址列表;
自定义适配器myAdapter;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(你所在的R.layout.activity);
final DbHelper DbHelper=新的DbHelper(this);
stopsList=(ListView)findViewById(R.id.stopsList);
searchEditText=(EditText)findViewById(R.id.searchEditText);
addList=newarraylist();
addList=dbHelper.getAllData(“1”);
myAdapter=新的CustomAdapter(此,addList);
myAdapter.notifyDataSetChanged();
stopsList.setAdapter(myAdapter);
}
}
活动\u您在.xml上

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.ashu.busindicator.YouAreAt" >

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" 
    android:background="#000000">

    <EditText
        android:id="@+id/searchEditText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/search"
        android:textColor="#FFFFFF"
        android:ems="10" >

    </EditText>

</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ListView
        android:id="@+id/stopsList"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
    </ListView>

</LinearLayout>

</LinearLayout>

getAllData是我从DbHelper类检索数据的方法。 在我的ModelString类中,没有什么比两个字符串更好的了


logcat中没有错误

ArrayList是简单的增长数组。当尝试添加元素时,缓冲区大小被超过,它只是在增长。所以初始大小可以是任何正值


您在评论中说“我调试它,它显示size=0和modCount=0”,因此ArrayList实际上是空的,因此您的CustomAdapter没有数据显示在listview中

至于“addList.size();在Logcat中,它返回一个36”。ArrayList是简单的增长数组。当尝试添加元素时,缓冲区大小被超过,它只是在增长。所以初始大小可以是任何正值。大小()为1将太小。即使有一些元素,我们也会有一些调整大小的操作。100将是空间的损失


因此,第10条是妥协。为什么是10而不是12或8?第一个提示是,对典型用例进行了分析,这是性能损失和空间损失之间的最佳匹配。然而,我认为,看到Sun的原始代码,它没有被深入分析,它是一个任意的“不太小,也不太大”的数字。

在模型类中创建setter和getter。这将使您能够将项目放入listview


arraylist应该包含模型类的对象

您确定
addList
不是空的吗?您是否尝试交换最后两行?您的代码看起来不错。尝试在Logcat
addList
count中打印。我调试了它,它显示size=0和modCount=0。没有addList不是空的。我检查addList.size();在Logcat中,它返回一个36。为什么
getItem
返回
position
?它应该返回你的类的实例。我同意addList是一个简单的数组,它正在增长。如果我将代码转换为ArrayAdapter而不是BaseAdapter。列表工作正常。那么BaseAdapter有什么问题?