나는이 ViewPager. Getting wrong cursor in SimpleCursorAdapter과 비슷한 상황이며이 ViewPager Cursor positon이지만 질문에는 해당 답변이 없었습니다.ViewPager 오프셋 커서 위치
상황
나는 데이터베이스 (커서)에서 내 viewpager에서 뷰를로드하고 있습니다. 항목 (Buttons
, TextViews
등)의 텍스트를 설정하면 예상 된 위치에 올바른 커서가 표시됩니다. 그러나 내가하려고 할 때 button.getText()
그것은 데이터베이스의 다음 위치에서 텍스트를 보여줍니다 (버튼 등과 동일). 사용자가 앞으로 와이프하면, 커서는 다음 위치에 값을 반환하고 사용자가 뒤로 스 와이프하면, 그래서 앞으로 보내 주시면 위치 x
에서 이전 위치
에서 값을 반환 위치 x + 1
에 커서를 반환하고 뒤로 보내 주시면 것은받은 위치에 커서를 반환 x - 1
. 어떻게 해결할 수 있습니까? 이 도움을 받았으면 내
public Object instantiateItem(View view, int position) {
cursor.moveToPosition(position);
int cus = cursor.getPosition();
Log.d(DBHelper.TAG, Integer.toString(cus) + " current cursor position ");
final ViewPager pager = (ViewPager) view.findViewById(R.id.pager_nav);
ScrollView layout = (ScrollView) inflater.inflate(R.layout.question_activity, null);
if (cursorCategory != null && cursorCategory.moveToFirst()){
String s = cursorCategory.getString(cursorCategory.getColumnIndex("name"));
((TextView)layout.findViewById(R.id.text_category)).setText(s);
}
Typeface tpf = Typeface.createFromAsset(context.getAssets(), "Roboto-Light.ttf");
String text = cursor.getString(cursor.getColumnIndex("question_text"));
TextView question_text = (TextView)layout.findViewById(R.id.text_question);
question_text.setText(text);
Log.d("question_text", question_text.getText() + " " + position + " " + text);
question_text.setTypeface(tpf);
final String qPos = Integer.toString(position + 1) + ".";
TextView question_position = (TextView) layout.findViewById(R.id.text_position);
question_position.setText(qPos);
question_position.setTypeface(tpf);
this.rightAnswer = cursor.getString(cursor.getColumnIndex(DBHelper.RIGHT_ANSWER));
this.wrongAnswer1 = cursor.getString(cursor.getColumnIndex(DBHelper.WRONG_ANSWER1));
this.wrongAnswer2 = cursor.getString(cursor.getColumnIndex(DBHelper.WRONG_ANSWER2));
optionsArray = new ArrayList<String>();
optionsArray.clear();
optionsArray.add(this.rightAnswer);
optionsArray.add(this.wrongAnswer1);
optionsArray.add(this.wrongAnswer2);
Collections.shuffle(optionsArray);
option1 = (Button) layout.findViewById(R.id.button_option1);
option1.setText((CharSequence) this.optionsArray.get(0));
option2 = (Button) layout.findViewById(R.id.button_option2);
option2.setText((CharSequence) this.optionsArray.get(1));
option3 = (Button) layout.findViewById(R.id.button_option3);
option3.setText((CharSequence) this.optionsArray.get(2));
if (this.optionsArray.get(0).equalsIgnoreCase(this.rightAnswer)) {
this.option1.setTag(DBHelper.RIGHT_ANSWER);
} else if (!this.rightAnswer.equalsIgnoreCase((String) this.optionsArray.get(0))) {
this.option1.setTag("wrong");
}
if (this.rightAnswer.equalsIgnoreCase((String) this.optionsArray.get(1))) {
this.option2.setTag(DBHelper.RIGHT_ANSWER);
} else if (!this.rightAnswer.equalsIgnoreCase((String) this.optionsArray.get(1))) {
this.option2.setTag("wrong");
}
if (this.rightAnswer.equalsIgnoreCase((String) this.optionsArray.get(2))) {
this.option3.setTag(DBHelper.RIGHT_ANSWER);
} else if (!this.rightAnswer.equalsIgnoreCase((String) this.optionsArray.get(2))){
this.option3.setTag("wrong");
}
private int getItem(int i) {
return i += pager.getCurrentItem();
}
});
option1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String Tag = option1.getTag().toString();
Toast.makeText(context, Tag + " " + option1.getText(), Toast.LENGTH_SHORT).show();
}
});
option2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String Tag = option2.getTag().toString();
Toast.makeText(context, Tag + " " + option2.getText(), Toast.LENGTH_SHORT).show();
}
});
option3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
String Tag = option3.getTag().toString();
Toast.makeText(context, Tag + " " + option3.getText(), Toast.LENGTH_SHORT).show();
}
});
}
PagerAdapter.instantiateItem
그리고 내 onLoadFinished()
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor cursor) {
switch (loader.getId()) {
case QUESTION_TEXT:
Log.d(" Selection Position", " Selection Position" + selcectionPosition);
Log.d(" Activity Position", cursor.getPosition() + " Activity Position");
mAdapter.swapCursor(cursor);
mAdapter.notifyDataSetChanged();
pager.setCurrentItem(selcectionPosition, true);
break;
}
}
입니다.