У меня есть простая программа, которую я сделал на Java для Android, но мне трудно сделать строку таблицы доступной для кликов. Когда пользователь щелкает строку, я хочу, чтобы определенное изображение отображалось в изображении ниже. Вот мой xml-код:
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FF909090"
android:stretchColumns="1" >
<TableRow>
<TextView
android:layout_margin="2dip"
android:layout_marginRight="2dip"
android:background="#0000ff"
android:padding="3dip"
android:text="I" />
<TextView
android:layout_margin="2dip"
android:layout_marginLeft="1dip"
android:background="#0000ff"
android:gravity="center"
android:padding="3dip"
android:text="A"
android:onClick="Achord" />
</TableRow>
<TableRow>
<TextView
android:layout_column="0"
android:layout_margin="2dip"
android:background="#0000ff"
android:padding="3dip"
android:text="II" />
<TextView
android:layout_margin="2dip"
android:background="#0000ff"
android:gravity="center"
android:padding="3dip"
android:text="Bm" />
</TableRow>
<TableRow>
<TextView
android:layout_column="0"
android:layout_margin="2dip"
android:background="#0000ff"
android:padding="3dip"
android:text="III" />
<TextView
android:layout_margin="2dip"
android:background="#0000ff"
android:gravity="center"
android:padding="3dip"
android:text="C#m" />
</TableRow>
<View
android:layout_height="2dip"
android:background="#FF909090" />
<TableRow android:background="#0000ff" >
</TableRow>
<TableRow>
<TextView
android:layout_margin="2dip"
android:background="#0000ff"
android:padding="3dip"
android:text="IV" />
<TextView
android:layout_margin="2dip"
android:background="#0000ff"
android:gravity="center"
android:padding="3dip"
android:text="D" />
</TableRow>
<View
android:layout_height="2dip"
android:background="#FF909090" />
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</TableRow>
<TableRow>
<TextView
android:layout_margin="2dip"
android:layout_marginRight="2dip"
android:background="#0000ff"
android:padding="3dip"
android:text="V" />
<TextView
android:layout_margin="2dip"
android:layout_marginLeft="1dip"
android:background="#0000ff"
android:gravity="center"
android:padding="3dip"
android:text="E" />
</TableRow>
<TableRow>
<TextView
android:layout_margin="2dip"
android:layout_marginRight="2dip"
android:background="#0000ff"
android:padding="3dip"
android:text="VI" />
<TextView
android:layout_margin="2dip"
android:layout_marginLeft="1dip"
android:background="#0000ff"
android:gravity="center"
android:padding="3dip"
android:text="F#m" />
</TableRow>
<TableRow>
<TextView
android:layout_margin="2dip"
android:layout_marginRight="2dip"
android:background="#0000ff"
android:padding="3dip"
android:text="VII" />
<TextView
android:layout_margin="2dip"
android:layout_marginLeft="1dip"
android:background="#0000ff"
android:gravity="center"
android:padding="3dip"
android:text="G#dim" />
</TableRow>
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.05"
android:background="#000000"
android:maxLines="10"
android:text="The relative minor of the Major key of A is F#m. The 12 bar blues progression in A is: \n A | A | A | A | D | D | A | A | E | D | A | E" />
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="0.03"
android:src="@drawable/android_focused" />
и вот мой java-код:
package com.coreservlets.widgets;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.TableRow;
import com.welly.keychords.R;
public class keya extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.keya);
}
}
я хочу, чтобы imageview1 отображал другое изображение в зависимости от того, какая строка была нажата. Любая помощь будет принята с благодарностью
Как предложил Сэм, я изменил свой код на это:
public class keya extends Activity {
ImageView imagev = (ImageView) findViewById(R.id.imageView1);
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.keya);
}
public void rowClick(View view) {
switch(view.getId()) {
case R.id.one:
// Load image from Drawable folder
imagev.setImageResource(R.drawable.android_normal); // example file for now
break;
}
}
}
но теперь у меня есть исключение нулевого указателя при запуске этого класса. хотя все компилируется нормально