Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.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
Android:第一次运行时只显示一些行_Android_Sqlite_Android Listview - Fatal编程技术网

Android:第一次运行时只显示一些行

Android:第一次运行时只显示一些行,android,sqlite,android-listview,Android,Sqlite,Android Listview,Listview显示的是一些行而不是所有项(有时,它什么也不显示),我不明白为什么会发生这种情况。它发生在第一次运行时。在这之后,它工作得很好,来自数据库的所有项目都在屏幕上填充。我将垂直方向放在线性布局xml文件中,并将内容高度换行。但问题并没有得到解决 这是我的主要活动: public class MainActivity extends Activity { public static final String PREFS_NAME = "MyPrefsFile1"; private

Listview显示的是一些行而不是所有项(有时,它什么也不显示),我不明白为什么会发生这种情况。它发生在第一次运行时。在这之后,它工作得很好,来自数据库的所有项目都在屏幕上填充。我将垂直方向放在线性布局xml文件中,并将内容高度换行。但问题并没有得到解决

这是我的主要活动:

public class MainActivity extends Activity {

public static final String PREFS_NAME = "MyPrefsFile1";

private TextView mTextView;
private ListView mListView;


ArrayList<WordDefinition> allWordDefinitions=new ArrayList<WordDefinition>();

DictionaryDatabase DictionaryDatabase;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);    
    setContentView(R.layout.main);
    mTextView = (TextView) findViewById(R.id.text);
    mListView = (ListView) findViewById(R.id.list);
    DictionaryDatabase=new DictionaryDatabase(this); 
    allWordDefinitions=DictionaryDatabase.getAllWords(); 

    Collections.sort(allWordDefinitions, new CustomComparator());    
        mListView.setAdapter(new BaseAdapter() {

        @Override
        public View getView(int position, View view, ViewGroup arg2) {
            if (view==null) {
                view=getLayoutInflater().inflate(R.layout.list_item, arg2, false);
            }
            TextView textView=(TextView) view.findViewById(R.id.listItemTextView);
            textView.setText(allWordDefinitions.get(position).word);

            return view;
        }

        @Override
        public long getItemId(int arg0) {
            // TODO Auto-generated method stub
            return 0;
        }

        @Override
        public Object getItem(int arg0) {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return allWordDefinitions.size();
        }
    });

    mListView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> arg0, View view, int position,
                long arg3) {
            Intent intent =new Intent(MainActivity.this, WordDefinitionDetailActivity.class);
            intent.putExtra("word", allWordDefinitions.get(position).word);
            intent.putExtra("definition", allWordDefinitions.get(position).definition);


            startActivity(intent);
        }
    });


    handleIntent(getIntent());
}

@Override
protected void onNewIntent(Intent intent) {
    handleIntent(intent);
}

private void handleIntent(Intent intent) {
    if (Intent.ACTION_VIEW.equals(intent.getAction())) {
        Intent wordIntent = new Intent(this, WordActivity.class);
        this.finish();
        wordIntent.setData(intent.getData());
        startActivity(wordIntent);
    } else if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
        String query = intent.getStringExtra(SearchManager.QUERY);
        showResults(query);

    }
}

private void showResults(String query) {

    Cursor cursor = managedQuery(DictionaryProvider.CONTENT_URI, null, null,
                            new String[] {query}, null);

    if (cursor == null) {
        mTextView.setText(getString(R.string.no_results, new Object[] {query}));
    } else {
        int count = cursor.getCount();
        String countString = getResources().getQuantityString(R.plurals.search_results,
                                count, new Object[] {count, query});
        mTextView.setText(countString);

        String[] from = new String[] { DictionaryDatabase.KEY_WORD,
                                       DictionaryDatabase.KEY_DEFINITION };

        int[] to = new int[] { R.id.word,
                               R.id.definition };

        SimpleCursorAdapter words = new SimpleCursorAdapter(this,
                                      R.layout.result, cursor, from, to);
        mListView.setAdapter(words);

        mListView.setOnItemClickListener(new OnItemClickListener() {

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                Intent wordIntent = new Intent(getApplicationContext(), WordActivity.class);
                Uri data = Uri.withAppendedPath(DictionaryProvider.CONTENT_URI,
                                                String.valueOf(id));
                wordIntent.setData(data);
                startActivity(wordIntent);

            }
        });
    }
}


public class CustomComparator implements Comparator<WordDefinition> {          

   @Override
       public int compare(WordDefinition p1, WordDefinition p2) {
          return p1.word.compareTo(p2.word);
       }
    }

}
公共类MainActivity扩展活动{
公共静态最终字符串PREFS\u NAME=“MyPrefsFile1”;
私有文本视图mTextView;
私有列表视图;
ArrayList allWordDefinitions=新建ArrayList();
字典数据库字典数据库;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTextView=(TextView)findviewbyd(R.id.text);
mListView=(ListView)findViewById(R.id.list);
DictionaryDatabase=新DictionaryDatabase(此);
allWordDefinitions=DictionaryDatabase.getAllWords();
Collections.sort(allWordDefinitions,newcustomcomparator());
setAdapter(新的BaseAdapter(){
@凌驾
公共视图getView(内部位置、视图视图、视图组arg2){
如果(视图==null){
view=GetLayoutFlater()。充气(R.layout.list_项,arg2,false);
}
TextView TextView=(TextView)view.findViewById(R.id.listItemTextView);
setText(allWordDefinitions.get(position.word));
返回视图;
}
@凌驾
公共长getItemId(int arg0){
//TODO自动生成的方法存根
返回0;
}
@凌驾
公共对象getItem(int arg0){
//TODO自动生成的方法存根
返回null;
}
@凌驾
public int getCount(){
//TODO自动生成的方法存根
返回allWordDefinitions.size();
}
});
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(适配器视图arg0、视图视图、内部位置、,
长arg3){
意向意向=新意向(MainActivity.this,WordDefinitionDetailActivity.class);
intent.putExtra(“word”,allWordDefinitions.get(position.word);
intent.putExtra(“定义”,allWordDefinitions.get(position.definition);
星触觉(意向);
}
});
handleIntent(getIntent());
}
@凌驾
受保护的void onNewIntent(意图){
手册内容(意图);
}
私人无效手册内容(意图){
if(Intent.ACTION_VIEW.equals(Intent.getAction())){
Intent-wordIntent=newintent(这个,WordActivity.class);
这个;
setData(intent.getData());
startActivity(wordIntent);
}else if(Intent.ACTION_SEARCH.equals(Intent.getAction())){
String query=intent.getStringExtra(SearchManager.query);
显示结果(查询);
}
}
私有void显示结果(字符串查询){
Cursor Cursor=managedQuery(DictionaryProvider.CONTENT_URI,null,null,
新字符串[]{query},null);
if(游标==null){
setText(getString(R.string.no_results,新对象[]{query}));
}否则{
int count=cursor.getCount();
String countString=getResources().getQuantityString(R.plurals.search\u结果,
计数,新对象[]{count,query});
mTextView.setText(countString);
String[]from=新字符串[]{DictionaryDatabase.KEY\u单词,
DictionaryDatabase.KEY_DEFINITION};
int[]to=新int[]{R.id.word,
R.id.definition};
SimpleCrsorAdapter words=新的SimpleCrsorAdapter(此,
R.layout.result、光标、from、to);
mListView.setAdapter(字);
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
Intent-wordIntent=newintent(getApplicationContext(),WordActivity.class);
Uri数据=Uri.withAppendedPath(DictionaryProvider.CONTENT\u Uri,
字符串。valueOf(id));
setData(数据);
startActivity(wordIntent);
}
});
}
}
公共类CustomComparator实现Comparator{
@凌驾
公共整数比较(字定义p1,字定义p2){
返回p1.word.compareTo(p2.word);
}
}
}
字定义(数组列表):

公共类WordDefinition{
字符串词,定义;
public WordDefinition(字符串词,ArrayList alldefinition){
这个单词=单词;
StringBuilder StringBuilder=新的StringBuilder();
for(字符串:alldefinition){
追加(字符串);
}       
this.word=stringBuilder.toString();
}
public WordDefinition(String-word、String-alldefinition){
这个单词=单词;
this.definition=alldefinition;
} 
}
字典数据库(代码段)

public ArrayList getAllWords(){
ArrayList ArrayList=新的ArrayList();
SQLiteDatabase=mDatabaseOpenHelper.getReadableDatabase();
String selectAllQueryString=“SELECT*FROM”+FTS\u虚拟表;
Cursor Cursor=database.rawQuery(selectAllQueryString,null);
if(cursor.moveToFirst()){
做{
WordDefinition WordDefinition=newworddefinition(cursor.getString(cursor.getColumnIndex(关键字定义)),cursor.getString(cursor.getColumnIndex(关键字定义));
add(wordDefinition);
}while(cursor.moveToNext());
}   
返回数组列表;
}
主XML

  <?xml version="1.0" encoding="utf-8"?>
  <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"
    android:background="@drawable/fundoeua"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    >

    <LinearLayout
    android:id="@+id/Line1"        
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/text"
        android:textColor="#FFFFFF"
        android:gravity="right"
        android:textAlignment="gravity"
        android:paddingTop="5dp"
        android:paddingBottom="5dp"
        android:paddingRight="15dp"
        android:textStyle="bold"
        android:textSize="20sp"
        android:text="@string/chamada"
        android:background="@color/vermelho"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />



<ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"

        android:divider="#ff0000"
            android:dividerHeight="4px" 
         />

</LinearLayout>





</RelativeLayout>

list_item.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/seletor2"
    android:orientation="vertical" >

    <TextView
    android:id="@+id/listItemTextView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="5dp"        
    android:textColor="@color/preto"
    android:text="Large Text"
    android:textAppearance="?android:attr/textAppearanceLarge" />

   </LinearLayout>

  <?xml version="1.0" encoding="utf-8"?>
  <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"
    android:background="@drawable/fundoeua"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    >

    <LinearLayout
    android:id="@+id/Line1"        
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/text"
        android:textColor="#FFFFFF"
        android:gravity="right"
        android:textAlignment="gravity"
        android:paddingTop="5dp"
        android:paddingBottom="5dp"
        android:paddingRight="15dp"
        android:textStyle="bold"
        android:textSize="20sp"
        android:text="@string/chamada"
        android:background="@color/vermelho"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />



<ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"

        android:divider="#ff0000"
            android:dividerHeight="4px" 
         />

</LinearLayout>





</RelativeLayout>
    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/seletor2"
    android:orientation="vertical" >

    <TextView
    android:id="@+id/listItemTextView"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="5dp"        
    android:textColor="@color/preto"
    android:text="Large Text"
    android:textAppearance="?android:attr/textAppearanceLarge" />

   </LinearLayout>