2017-03-09 3 views
0

私は現在、リストビューにデータが追加されたときに使用されるリストビューを持っています。しかし、私はまた、リスト項目によって、ユーザーが何をすべきかを説明するデフォルトのリストを持っている(つまり、デフォルト値で入力されているフィールドにタスクを入力する)ようにしたい。私のコードは、データベースヘルパークラス、databasemanager、およびtodolistである実際のアクティビティで構成されています。コードは以下に掲載されますリストビューにデータが追加される前に、デフォルトのリストビューを設定するにはどうすればよいですか?

import android.content.Context; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 

public class DatabaseHelper extends SQLiteOpenHelper { 

    // Table Name 
    public static final String TABLE_NAME = "todolist"; 

    // Table columns 
    public static final String _ID = "_id"; 
    public static final String task = "task"; 

    // Database Information 
    static final String DB_NAME = "pset4.s3db"; 

    // database version 
    static final int DB_VERSION = 1; 

    // Creating table query 
    private static final String CREATE_TABLE = 
      "CREATE TABLE " + TABLE_NAME + " (" + 
        _ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + 
        task + " TEXT)"; 

    public DatabaseHelper(Context context) { 
     super(context, DB_NAME, null, DB_VERSION); 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 
     db.execSQL(CREATE_TABLE); 
    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
     db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); 
     onCreate(db); 

    } 



import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.SQLException; 
import android.database.sqlite.SQLiteDatabase; 
import android.nfc.Tag; 
import android.util.Log; 

import java.util.Arrays; 

import android.content.ContentValues; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.SQLException; 
import android.database.sqlite.SQLiteDatabase; 
import android.widget.EditText; 
import android.widget.Toast; 

public class DBManager { 

    private DatabaseHelper dbHelper; 

    private Context context; 

    private SQLiteDatabase database; 

    public DBManager(Context c) { 
     context = c; 
    } 

    public DBManager open() throws SQLException { 
     dbHelper = new DatabaseHelper(context); 
     database = dbHelper.getWritableDatabase(); 
     return this; 
    } 

    public void close() { 
     dbHelper.close(); 
    } 


    public void insert(String name) { 
     ContentValues contentValue = new ContentValues(); 
     contentValue.put(DatabaseHelper.task, name); 
     database.insert(DatabaseHelper.TABLE_NAME, null, contentValue); 
     fetch(); 
    } 



    public Cursor fetch() { 
     String[] columns = new String[] { DatabaseHelper._ID, DatabaseHelper.task }; 
     Cursor cursor = database.query(DatabaseHelper.TABLE_NAME, columns, null, null, null, null, null); 
     if (cursor != null) { 
      cursor.moveToFirst(); 
     } 
     else{ 

     } 
     return cursor; 
    } 

    public int update(long _id, String name) { 
     ContentValues contentValues = new ContentValues(); 
     contentValues.put(DatabaseHelper.task, name); 
     int i = database.update(DatabaseHelper.TABLE_NAME, contentValues, DatabaseHelper._ID + " = " + _id, null); 
     return i; 
    } 

    public void delete(long _id) { 
     database.delete(DatabaseHelper.TABLE_NAME, DatabaseHelper._ID + "=" + _id, null); 
    } 


} 


import android.app.Activity; 
import android.content.Context; 
import android.content.SharedPreferences; 
import android.content.pm.PackageInstaller; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.opengl.EGLDisplay; 
import android.os.Build; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.CursorAdapter; 
import android.widget.EditText; 
import android.widget.LinearLayout; 
import android.widget.ListView; 
import android.widget.SimpleCursorAdapter; 
import android.widget.TextView; 
import android.widget.Toast; 
import com.github.paolorotolo.expandableheightlistview.ExpandableHeightListView; 

import org.w3c.dom.Text; 

import java.io.File; 
import java.util.ArrayList; 
import java.util.List; 


public class MainActivity extends AppCompatActivity { 
    private DBManager dbManager; 
    private ListView listView; 
    private EditText edittext; 
    TextView emptyText; 




    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     listView = (ListView) findViewById(R.id.listview); 


     // opens databasemanager 
     dbManager = new DBManager(this); 
     dbManager.open(); 


     edittext = (EditText) findViewById(R.id.editText); 

     // asks for data from database 
     final Cursor cursor = dbManager.fetch(); 
     final TodoCursorAdapter cursorAdapter = new TodoCursorAdapter(this, cursor); 
     listView.setAdapter(cursorAdapter); 
     cursorAdapter.notifyDataSetChanged(); 
     listView.setAdapter(cursorAdapter); 
     listView.setLongClickable(true); 

     listView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() { 
      @Override 
      public boolean onItemLongClick(AdapterView<?> arg0, View arg1, 
              int arg2, long arg3) { 

       Toast.makeText(getApplicationContext(), "Item deleted : ", Toast.LENGTH_LONG).show(); 
       long id = cursor.getLong(cursor.getColumnIndex(DatabaseHelper._ID)); 
       deletefromwatchlist((int) id); 
       dbManager.delete(id); 
       cursorAdapter.notifyDataSetChanged(); 
       recreate(); 
       return true; 
      } 
     }); 
    } 


    public void addtowatchlist(String text){ 
     final String entry = edittext.getText().toString(); 
     dbManager.insert(entry); 
     recreate(); 

    } 


    public void deletefromwatchlist(int id) { 
     dbManager.delete(id); 

    } 


    @Override 
    protected void onDestroy() { 
     if (dbManager != null) 
     { 
      dbManager.close(); 
     } 
     super.onDestroy(); 
    } 

    public void click(View view) 
    { 
     EditText edittext = (EditText) findViewById(R.id.editText); 
     String text = edittext.getText().toString(); 
     addtowatchlist(text); 
    } 

} 
+0

この問題は、リストが空のときに表示されるメッセージを保持するXMLファイルを追加することで解決しました。データベースやリストビューが空であるかどうかをチェックし、空のxmlの可視性をtrueに設定します。 –

答えて

0

多分、フィールドに自動的に値を設定するオーバーロード機能を作成します。ユーザがフィールドを押すと、フィールドはクリアされ、他のファンクションが呼び出されます。

関連する問題