1

メモ帳アプリケーションを構築しようとしています。私のレイアウトには 2 つの TextView があります。最初のテキスト ビューには「Your Saved Entries」という文字列のみが表示され、2 番目の TextView には保存されたエントリのタイトルが表示されます。私の問題は、最初の TextView が保存されたエントリのすべてのタイトルで繰り返されることです。「Your Saved Entries」という文字列が一度表示され、保存されたエントリのすべてのタイトルが表示されます。私を助けてください

保存されたエントリは、エントリのタイトルで繰り返されています

ここに私の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="wrap_content"
       android:orientation="vertical"
       android:paddingRight="3dp" 
       android:paddingLeft="3dp"
       android:paddingTop="15dp"
       android:paddingBottom="10dp"
       >
    <TextView xmlns:android="http://schemas.android.com/apk/res/android"

        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:text="@string/intro" />


<TextView xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/postslist" 
    android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:padding="8dp"
   android:textSize="20sp" 
   android:textColor="@android:color/white"

   android:gravity="center_vertical"
   />

 </LinearLayout>

ここに私の活動ファイルがあります

package com.ex.fastnotes;

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.ListActivity;
import android.content.Intent;
import android.database.Cursor;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.CursorAdapter;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.AdapterView.OnItemClickListener;

public class Notesli extends ListActivity {

     public static final String ROW_ID = "row_id";
     private ListView conListView;
     private CursorAdapter conAdapter;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        conListView=getListView();
        conListView.setOnItemClickListener(viewConListener);

        // map each name to a TextView
        String[] from = new String[] { "name" };
        int[] to = new int[] { R.id.postslist };

        conAdapter = new SimpleCursorAdapter(Notesli.this, R.layout.tlist, null, from, to);
        setListAdapter(conAdapter); // set adapter
    }


    @Override
    protected void onResume() 
    {
       super.onResume();  
       new GetContacts().execute((Object[]) null);
     } 


    @Override
    protected void onStop() 
    {
       Cursor cursor = conAdapter.getCursor();

       if (cursor != null) 
          cursor.deactivate();

       conAdapter.changeCursor(null);
       super.onStop();
    }    


    private class GetContacts extends AsyncTask<Object, Object, Cursor> 
    {
       DatabaseConnector dbConnector = new DatabaseConnector(Notesli.this);

       @Override
       protected Cursor doInBackground(Object... params)
       {
          dbConnector.open();
          return dbConnector.getAllContacts(); 
       } 

       @Override
       protected void onPostExecute(Cursor result)
       {
          conAdapter.changeCursor(result); // set the adapter's Cursor
          dbConnector.close();
       } 
    } 

    @Override
    public boolean onCreateOptionsMenu(Menu menu) 
    {
       super.onCreateOptionsMenu(menu);
       MenuInflater inflater = getMenuInflater();
       inflater.inflate(R.menu.corefile, menu);
       return true;
    }   

    @Override
    public boolean onOptionsItemSelected(MenuItem item) 
    {
       Intent addContact = new Intent(Notesli.this, Corefile.class);
       startActivity(addContact);
       return super.onOptionsItemSelected(item);
    }

    OnItemClickListener viewConListener = new OnItemClickListener() 
    {
       public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,long arg3) 
       {         
          Intent viewCon = new Intent(Notesli.this, ViewNotes.class);
          viewCon.putExtra(ROW_ID, arg3);
          startActivity(viewCon);
       }
    };    

}
4

1 に答える 1

0

Adapter クラスを拡張して CustomArrayAdapter を実装する必要があります。そこから、保存されたエントリであるかどうかをフラグを使用して確認する必要があります。そうでない場合は、最初のテキストビューを表示します。

現在の保存エントリを識別するための 1 つのブール値オブジェクトを持つカスタム クラスのデータを含むリスト アイテム コンテナーのカスタムを作成します。新しいメモを編集/作成するときは、これを true に設定する前にオブジェクト値に true のフラグを立てるだけで、他のすべてのリスト項目を繰り返し、すべての項目フラグに false を設定してから、現在の項目フラグを true に設定する必要があります。

次に、アダプターを拡張する getView() を実装する必要があります。このメソッドでは、位置に基づいてリスト項目を取得して値をチェックし、それが true の場合は項目フラグ値を取得し、最初のテキストビューを表示に設定します。

于 2013-01-12T06:36:53.317 に答える