2013-05-14 5 views
1

이 문제에 대한 사용자 정의 CursorAdapter 내 머리에 잠시 동안 갇혀있다.안드로이드 : 대체 자원

내가해야 할 일은 : 리스트 뷰의 항목에 대한 자원을 교류와 목록보기를 표시합니다.

내 문제가 무엇 : 은 지금까지 나는 자원을 대체하고 데이터를 표시하지 않거나 데이터가 아닌 다른 자원을 표시 할 수 있습니다. 첫 번째 항목은 매번 잘 작동하지만 이후에는 형성되지 않습니다. 나는 아주 가깝다고 생각하지만, 무엇이 잘못 될지 생각할 수 없다.

나는 무엇을 했는가? 커스텀 단순 커서 어댑터를 사용했다.

코드입니다

:

문자열 []에서 = 새로운 String [] {(단지 관련 부분을 보여주는)

public class DialogCursor extends SimpleCursorAdapter { 

private LinearLayout wrapper; 
private TextView burbuja; 

    public DialogCursor(Context context, int layout, Cursor c, String[] from, 
     int[] to, int flags) { 
    super(context, layout, c, from, to, flags); 
    // TODO Auto-generated constructor stub 
} 



@Override 
    public View getView(int position, View convertView, ViewGroup parent) { 

    View row = convertView; 

    if (row == null) { 


     Context context = parent.getContext(); 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     row = inflater.inflate(R.layout.dialogo_row, parent, false); 

    } 
    burbuja = (TextView) row.findViewById(R.id.idiomaselec); 
    wrapper = (LinearLayout) row.findViewById(R.id.wrapper); 

    //get reference to the row 
    View view = super.getView(position, convertView, parent); 
    Log.d("Dialogo","enters getview"); 
    Log.d("Dialogo",Integer.toString(position)); 
    //check for odd or even to set alternate colors to the row background 
    if(position % 2 == 0){ 
    Log.d("Dialogo","Even"); 
    burbuja.setBackgroundResource(R.drawable.bubble_green); 
    wrapper.setGravity(Gravity.LEFT); 
    } 
    else { 
    Log.d("Dialogo","not even"); 
    burbuja.setBackgroundResource(R.drawable.bubble_yellow); 
    wrapper.setGravity(Gravity.RIGHT); 
    } 

    return row; 
    } 

} 커서 어댑터가이 다른 클래스에서 호출됩니다

DialogoTable.TABLE_DIALOGO + "." + columna};

// 우리가 매핑 할 UI의 필드 final int [] to = new int [] {R.id.idiomaselec};

Log.d("Dialogo","entra en fillData2"); 
getLoaderManager().initLoader(0, null, this); 
if (bot) { 
    Log.d("Dialogo","entra en fillData2.5"); 
    getLoaderManager().restartLoader(0, null, this); 
} 

adapter2 = new DialogCursor(this, R.layout.dialogo_row, null, from, to, 0); 

setListAdapter(adapter2); 

그리고 출력 : 내가 행 (코드의 마지막 줄) 를 반환하면 내가보기 (코드의 마지막 줄)을 반환하는 경우 내가 올바른 장소에 있지만 데이터 와 배경 자료를 얻을 내가 얻을 데이터가 있지만 첫 번째 항목 만 오른쪽 백그라운드 자원을가집니다.

마지막 주 : 나는이 예를 http://adilsoomro.blogspot.com/2012/12/android-listview-with-speech-bubble.html 을 따랐다하지만 난 내 DB에서 데이터를 wnat 때문에 클래스 메시지를 작성 싶지 않다.

당신의 도움 :) 내가 커서 위치에 따라 다른 자원 cursorAdapter 사용자 정의를 할 수 있었다 유사한 경우

답변

0

주셔서 감사합니다. entryView가 전달 된 bindView에 다음 코드를 추가했습니다. 나는 getView를 무시하고있다.

if(cursor.getPosition()%2 == 1){ 
    entryView.findViewById(R.id.title_relative).setBackgroundColor(getResources().getColor(R.color.orange)); 
}else{ 
    entryView.findViewById(R.id.title_relative).setBackgroundColor(getResources().getColor(R.color.blue)); 
}