2014-11-09 3 views
0

미리 채워진 데이터베이스를 사용하여 listview에서 Onclicklistener를 작성하려고합니다. 나는 이것에 onclicklistener를 추가하는 법을 모르겠습니다. 누군가 어떻게 나를 보여줄 수 있습니까? 감사!미리 채우기 또는 외부 데이터베이스를 사용하여 목록 뷰에 OnClickListener 추가

DataListView.java는

package com.example.thetrial; 

import java.io.IOException; 
import android.app.Activity; 
import android.database.Cursor; 
import android.os.Bundle; 
import android.widget.ListView; 
import android.widget.SimpleCursorAdapter; 

public class DataListView extends Activity { 
DBHelper dbhelper; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main);  
String[] from = new String[] { "_id", "comm", "desc" }; 
int[] to = new int[] { R.id.TextView1, R.id.TextView2, R.id.TextView3 }; 
dbhelper = new DBHelper(this); 
    try { 
    dbhelper.createDataBase(); 
    } catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
    } 

Cursor c = dbhelper.getData(); 

SimpleCursorAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), R.layout.list, c, from, to); 

ListView list = (ListView) findViewById(R.id.ListView1); 

list.setAdapter(adapter); 
} 

} 

이것은 내가 SQLite는 데이터베이스 의해 Broswer을 사용하고 내 DBHelper.java

package com.example.thetrial; 


import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.OutputStream; 
import android.content.Context; 
import android.database.Cursor; 
import android.database.sqlite.SQLiteDatabase; 
import android.database.sqlite.SQLiteOpenHelper; 
import android.util.Log; 

public class DBHelper extends SQLiteOpenHelper { 

private static String DB_NAME = "trialeleventh"; 
private static int DB_Version = 2; 
private SQLiteDatabase db; 
private final Context context; 
private String DB_PATH; 

public DBHelper(Context context) { 
    super(context, DB_NAME, null, DB_Version); 
    this.context = context; 
    DB_PATH = "/data/data/" + context.getPackageName() + "/" + "databases/"; 
} 

public void createDataBase() throws IOException { 

      boolean dbExist = checkDataBase(); 
      if (dbExist) { 
     try { 
      copyDataBase(); 
      } catch (IOException e) { 
      throw new Error("Error copying database"); 
      } 
      } else { 
     SQLiteDatabase db = this.getWritableDatabase(); 
     if (db.isOpen()){ 
      db.close(); 
      try { 
       copyDataBase(); 
       } catch (IOException e) { 
       throw new Error("Error copying database"); 
       } 
     } else { 
     try { 
      copyDataBase(); 
      } catch (IOException e) { 
      throw new Error("Error copying database"); 
      } 
     } 
      } 
      } 

private boolean checkDataBase() { 
    File dbFile = new File(DB_PATH + DB_NAME); 
    return dbFile.exists(); 
} 

private void copyDataBase() throws IOException { 

    InputStream myInput = context.getAssets().open(DB_NAME); 
    String outFileName = DB_PATH + DB_NAME; 
    OutputStream myOutput = new FileOutputStream(outFileName); 
    byte[] buffer = new byte[1024]; 
    int length; 
    while ((length = myInput.read(buffer)) > 0) { 
    myOutput.write(buffer, 0, length); 
    } 

    // Close the streams 
    myOutput.flush(); 
    myOutput.close(); 
    myInput.close(); 

} 

public Cursor getData() { 
    String myPath = DB_PATH + DB_NAME; 
    db = SQLiteDatabase.openDatabase(myPath, null, 
    SQLiteDatabase.OPEN_READWRITE); 
    onUpgrade(db, DB_Version, 2); 
    Cursor c = db.rawQuery("SELECT * FROM linux_comm", null); 
    return c; 
} 

@Override 
public void onCreate(SQLiteDatabase arg0) { 
    // TODO Auto-generated method stub 
} 

@Override 
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 
    // TODO Auto-generated method stub 
    Log.d ("onUpgrade first log", Integer.toString(db.getVersion())); 

    if (oldVersion == 1) { 

     DB_Version = 2; 
     db.setVersion(2); 
     Log.d ("onUpgrade second log", Integer.toString(db.getVersion())); 

    } 

    else { 
     Log.d("onUpgrade", "else-clause: Already upgraded!"); 
} 
} 
} 

입니다. 제발 도와주세요! 감사!

+0

당신은 어떤 목록 setOnItemClickListener를 사용할 수 있습니다. 데이터베이스가 예외는 아닙니다. –

+0

내 대답이 도움이 되었습니까? –

답변

1

아래와 같이 목록에 setOnItemClickListener를 추가하십시오.

list.setOnItemClickListener(new OnItemClickListener() 
{ 
    @Override 
    public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3) 
    { 
     //Write onClick logic here. 
    } 
}); 
1

사용 setOnItemClickListener는

 list.setOnItemClickListener(new OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 

      TextView text = ((TextView) view.findViewById(R.id.from)); 
      String from = text.getText().toString(); 
      Toast.makeText(DataListView.this, 
           from, Toast.LENGTH_SHORT).show(); 
      // your Code here 

     } 

    }); 
+0

다른 인 텐트를 시작하고 볼 수있는 데이터가 ID의 내부 또는 다른 열의 경우 어떻게됩니까? 어떻게 좀 보여 줄 수 있니? – user3398666

+0

나는 이해할 수 없었다. 특정 목록의 ID 세부 정보가있는 다른 활동으로 이동해야한다고 말하는 것입니까? –

+0

이렇게. 내 db 테이블에는 6 개의 열이 있는데 여기에는 처음 세 개의 열 데이터 만 나열되어 있습니다. 따라서 해당 항목을 i 클릭하면 다른 3 열 데이터가 표시되는 페이지로 이동합니다. – user3398666

관련 문제