【发布时间】:2015-06-18 17:47:59
【问题描述】:
这是我的应用程序。单击新按钮时,它将一一显示问题,如果我们单击选项(A、B、C、D),我应该显示正确或不正确。对于我现在建议的编码问题我的选项。
我在一个 xml 文件中有 5 个文本视图和 4 个按钮,这些数据是从数据库中填充的,所以我使用了 ListView 和 SimpleCursorAdapter。一切正常。现在我想为 Xml 文件中的按钮编写 OnClick 函数。我无法添加 SetOnClickListener,因为它显示错误“无法对资源 ID 进行优化”,因为按钮在不同的 xml 中可用。 如何为这些按钮分配 OnClick()?
SQLiteDatabase db;
Cursor c1;
Button b1;
String from[] = {"_id", "optn1", "optn2", "optn3", "optn4", "ab"};
int[] to = {R.id.textView3, R.id.textView5, R.id.textView6, R.id.textView7, R.id.textView8, R.id.textView10};
int i = 0;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
db.execSQL("CREATE TABLE ques(_id TEXT,optn1 TEXT ,optn2 TEXT,optn3 TEXT,optn4 TEXT,qno INTEGER,ab INTEGER)");
t1 = (TextView) findViewById(R.id.textView4);
t2 = (TextView) findViewById(R.id.textView9);
b1 = (Button) findViewById(R.id.button);
b1.setOnClickListener(this);
}
public void onClick(View v) {//this onclick is to display the texts only if the button is clicked not as soon as the app is executed
if (v == b1) {
db = openOrCreateDatabase("quiz1.db", SQLiteDatabase.CREATE_IF_NECESSARY, null);
if (c1 != null) {
i = c1.getInt(c1.getColumnIndex("qno"));
}
c1 = db.rawQuery("SELECT * FROM ques WHERE qno>'" + i + "' ORDER BY qno LIMIT 1", null);
SimpleCursorAdapter sca = new SimpleCursorAdapter(MainActivity.this, R.layout.compo_list, c1, from, to);
ListView l1 = (ListView) findViewById(R.id.listView);
l1.setAdapter(sca);
sca.changeCursor(c1);
t1.setText(String.valueOf(i));
}
}
Layout.XML
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:id="@+id/textView3"
android:text="QUESTION"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="44dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="40dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Medium Text"
android:id="@+id/textView5"
android:layout_marginTop="46dp"
android:phoneNumber="false"
android:gravity="center"
android:layout_below="@+id/textView3"
android:layout_centerHorizontal="true" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="A"
android:id="@+id/button2"
android:layout_alignTop="@+id/textView5"
android:layout_toLeftOf="@+id/textView5"
android:layout_toStartOf="@+id/textView5" />
<TextView
android:layout_width="wrap_content"
android:layout_height="40dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Medium Text"
android:id="@+id/textView6"
android:layout_below="@+id/button2"
android:layout_toRightOf="@+id/button2"
android:layout_toEndOf="@+id/button2"
android:gravity="center" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="B"
android:id="@+id/button3"
android:layout_below="@+id/button2"
android:layout_alignLeft="@+id/button2"
android:layout_alignStart="@+id/button2"
android:layout_alignRight="@+id/button2"
android:layout_alignEnd="@+id/button2"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="40dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Medium Text"
android:id="@+id/textView7"
android:layout_below="@+id/button3"
android:layout_alignLeft="@+id/textView6"
android:layout_alignStart="@+id/textView6"
android:gravity="center" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="C"
android:id="@+id/button4"
android:layout_alignTop="@+id/textView7"
android:layout_alignLeft="@+id/button3"
android:layout_alignStart="@+id/button3" />
<TextView
android:layout_width="wrap_content"
android:layout_height="40dp"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="Medium Text"
android:id="@+id/textView8"
android:layout_below="@+id/button4"
android:layout_toRightOf="@+id/button4"
android:layout_toEndOf="@+id/button4"
android:gravity="center" />
<Button
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="D"
android:id="@+id/button5"
android:layout_alignTop="@+id/textView8"
android:layout_alignLeft="@+id/button4"
android:layout_alignStart="@+id/button4" />
等待建议。如果您能帮助我,将不胜感激。在此先感谢。
【问题讨论】:
-
很抱歉,您使用
setOnClick的部分在哪里?我只能看到查询数据库并将适配器设置为 listView -
实际上按钮在“R.layout.compo_list” XML 文件中。它是传递给 ListView 的组件。
-
请使用当前信息更新您的问题。您能否提供您刚才提到的这种布局的缺失部分?
-
列出的错误是“”Couldnt Fine the resource id”。那是哪个代码?是在“new SimpleCursorAdapter”
-
No.here is my LogCat
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.Button.setOnClickListener(android.view.View$OnClickListener)' on a null object reference at com.example.shark.lvquiz.MainActivity.onCreate(MainActivity.java:38)当我尝试b2 = (Button) findViewById(R.id.button2); b2.setOnClickListener(this);below button 1时显示
标签: android android-listview onclick simplecursoradapter