나는 이것을 이해할 수 없습니다. 지금여전히 sqlite 결과로 사용자 지정 커서 어댑터를 찾을 수 없습니다.
String CREATE_ACHIEVEMENTS_TABLE = "CREATE TABLE achievements ("
+ "id INTEGER PRIMARY KEY,"
+ "name VARCHAR,"
+ "type VARCHAR,"
+ "value VARCHAR,"
+ "completed VARCHAR"
+ ")";
내가 노력하고 무엇을 :이
내가 다음과 같은 구조 SQLite는 테이블이 .... 내 첫 안드로이드 응용 프로그램은 그래서 그런 멍청한 놈되는 저 좀 도와 및 베어하십시오이다 "완료"열을 "예"로 설정하면 내 목록보기에서 행의 텍스트 색을 녹색으로 지정해야합니다.ive 튜토리얼을 읽고 코드 예제를 살펴보면 사용자 정의 커서 어댑터를 사용하여이를 구현하는 방법을 알 수 없습니다.) (
package com.dd.qsg;
import java.util.ArrayList;
import android.app.ListActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
public class ShowAchievements extends ListActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.achievements);
DatabaseHandler db = new DatabaseHandler(this);
ArrayList<String> achievements = db.getAchievements(this);
this.setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, achievements));
}
}
getAchievements :
ShowAchievements.java (메뉴 항목 "도전 과제보기"를 클릭하면이 활동이 시작됩니다) : 지금 내가 다음 코드를 사용하여리스트 뷰에 결과를 표시 위의 활동에 호출 기능 : 나는 내 ShowAchievements 활동 내에서 getAchievements()를 호출 할 때, 그것은 텍스트 녹색의 색상을 만들 수 있도록 사용자 정의 cursoradapter을 구현하려는 말했듯이
public ArrayList<String> getAchievements(Context context) {
ArrayList<String> achievementList = new ArrayList<String>();
String selectQuery = "SELECT * FROM achievements ORDER BY id asc";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor != null) {
if (cursor.moveToFirst()) {
do {
if (cursor.getString(4).equals("yes")) {
achievementList.add(cursor.getString(1)+" (completed)");
}
else {
achievementList.add(cursor.getString(1));
}
} while (cursor.moveToNext());
}
}
else {
achievementList.add(context.getResources().getString(R.string.na));
}
cursor.close();
db.close();
return achievementList;
}
listview 행이 "com pleted "는 데이터베이스의 해당 행에 대해"예 "로 설정됩니다. 나는 이것이 의미가 있기를 바랍니다. 나는 누군가가 나를 도와 물어 또 다른 질문에
, 그들은 이런 식으로 뭔가를 구현하기 위해 나에게 말했다 :private class MyCursorAdapter extends CursorAdapter {
public MyCursorAdapter(Context context, Cursor c) {
super(context, c);
}
@Override
public void bindView(View v, Context context, Cursor cursor) {
if(cursor.getString(cursor.getColumnIndex("completed").equals("yes")){
TextView tv = (TextView) v.findViewById(R.id.NAMEOFTEXTVIEW);
tv.setTextColor(Color.GREEN);
}
}
@Override
public View newView(Context arg0, Cursor arg1, ViewGroup arg2) {
LayoutInflater inflater = (LayoutInflater)this.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
row = inflater.inflate(R.layout.achievement_item, parent, false);
return row;
}
}
내 질문은 getAchievements이() 내에서 호출 할 때 작동하도록 내가이 구현합니까 어떻게 내 활동 ??? 어떤 XML 파일을 추가해야합니까? 선형 뷰를 가진 xml 파일을 내부에 listview와 함께 추가해야합니까? 그러면 선형 레이아웃 및 텍스트 뷰가있는 별도의 XML 파일을 내부에 추가해야합니까? 또는 내가 listview 같은 레이아웃으로 textview 넣을 수 있습니까? cursorAapter 코드로 전체 getAchievements() 함수를 대체합니까?
누군가가 나를 도와 주시면 감사하겠습니다. 나는 이것을 구현하는 방법을 알지 못한다. 나는 몇몇 자습서를 읽는 것을 시도하고 다만 많은 것을 혼동하고있다. 만약 내가 이것을 할 수있는 방법을 이해하는 데 도움이되는 완전한 모범이나 어떤 것을 얻을 수 있다면 그것은 많은 도움이 될 것입니다. 나는 나를 위해 모든 코드를 작성해달라고 요청하지는 않지만, 정확히 어떻게하면되는지를 정확히 파악하는 데 도움이되는 것이 정말 굉장 할 것입니다. 나는 이것이 내가 코드 리팩토링하기 위해 할 수있는 모든 당신의 개발 환경을 재현 할 수 아니에요 때문에
이것을 구현 .... – scarhand
내 대답을 업데이 트하십시오. – papaiatis