我有一个listactivity应用程序,每行包含TEXT和BUTTON,文本和按钮都必须是可点击的(我试图获得它),当点击文本时它将打开MyDay活动,当点击按钮时它将打开My_videos活动
当您打开应用程序并单击任何按钮时,它会发生什么,它在所有行中的任何按钮中都没有单击操作,但是当您单击任何行文本以便它将打开MyDay活动然后单击仅第一行,它将打开My_videos活动,即videoview,但同时其他按钮在其余行中无法点击。
任何建议都将受到赞赏,
感谢。
我的代码:
MyArrayAdapter类:
public class MyArrayAdapter extends ArrayAdapter<String> {
private final Activity context;
private final String[] classes;
Button bt1, bt2, bt3, bt4, bt5;
Typeface tf;
public MyArrayAdapter(Activity context, String[] classes) {
super(context, R.layout.row, classes);
this.context = context;
this.classes = classes;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
tf=Typeface.createFromAsset(context.getAssets(),"BFantezy.ttf");
LayoutInflater inflater = context.getLayoutInflater();
View rowView = inflater.inflate(R.layout.row, null, true);
TextView textView = (TextView) rowView.findViewById(R.id.row_label);
Button bt1=(Button) rowView.findViewById(R.id.button1);
Button bt2=(Button) rowView.findViewById(R.id.button2);
Button bt3=(Button) rowView.findViewById(R.id.button3);
Button bt4=(Button) rowView.findViewById(R.id.button4);
Button bt5=(Button) rowView.findViewById(R.id.button5);
String s = classes[position];
textView.setText(s);
((TextView)textView).setTypeface(tf);
if ( s.startsWith("First")) {
bt1.setBackgroundResource(R.drawable.ic_launcher);
bt2.setBackgroundResource(R.drawable.ic_launcher);
bt3.setBackgroundResource(R.drawable.ic_launcher);
bt4.setBackgroundResource(R.drawable.ic_launcher);
bt5.setBackgroundResource(R.drawable.ic_launcher); }
if ( s.startsWith("Second")) {
bt1.setBackgroundResource(R.drawable.ic_launcher);
bt2.setBackgroundResource(R.drawable.ic_launcher);
bt3.setBackgroundResource(R.drawable.ic_launcher);
bt4.setBackgroundResource(R.drawable.ic_launcher);
bt5.setBackgroundResource(R.drawable.ic_launcher); }
if ( s.startsWith("Third")) {
bt1.setBackgroundResource(R.drawable.ic_launcher);
bt2.setBackgroundResource(R.drawable.ic_launcher);
bt3.setBackgroundResource(R.drawable.ic_launcher);
bt4.setBackgroundResource(R.drawable.ic_launcher);
bt5.setBackgroundResource(R.drawable.ic_launcher); }
if ( s.startsWith("Fourth")) {
bt1.setBackgroundResource(R.drawable.ic_launcher);
bt2.setBackgroundResource(R.drawable.ic_launcher);
bt3.setBackgroundResource(R.drawable.ic_launcher);
bt4.setBackgroundResource(R.drawable.ic_launcher);
bt5.setBackgroundResource(R.drawable.ic_launcher); }
if ( s.startsWith("Fifth")) {
bt1.setBackgroundResource(R.drawable.ic_launcher);
bt2.setBackgroundResource(R.drawable.ic_launcher);
bt3.setBackgroundResource(R.drawable.ic_launcher);
bt4.setBackgroundResource(R.drawable.ic_launcher);
bt5.setBackgroundResource(R.drawable.ic_launcher); }
return rowView; }}
My_videos班级:
public class My_videos extends Activity {
private VideoView vid;
String night;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.video);
Bundle bdl = getIntent().getExtras();
night = bdl.getString("video");
vid = (VideoView) findViewById(R.id.videoView1);
if (night.equalsIgnoreCase("button1")) {
vid.setVideoURI(Uri.parse("android.resource://" + getPackageName()
+ "/" + R.raw.b));
vid.setMediaController(new MediaController(My_videos.this));
vid.requestFocus();
vid.start(); }
else if (night.equalsIgnoreCase("button2")) {
vid.setVideoURI(Uri.parse("android.resource://" + getPackageName()
+ "/" + R.raw.bb));
vid.setMediaController(new MediaController(My_videos.this));
vid.requestFocus();
vid.start(); }
else if (night.equalsIgnoreCase("button3")) {
vid.setVideoURI(Uri.parse("android.resource://" + getPackageName()
+ "/" + R.raw.bbb));
vid.setMediaController(new MediaController(My_videos.this));
vid.requestFocus();
vid.start(); }
else if (night.equalsIgnoreCase("button4")) {
vid.setVideoURI(Uri.parse("android.resource://" + getPackageName()
+ "/" + R.raw.bbbb));
vid.setMediaController(new MediaController(My_videos.this));
vid.requestFocus();
vid.start(); }
else if (night.equalsIgnoreCase("button5")) {
vid.setVideoURI(Uri.parse("android.resource://" + getPackageName()
+ "/" + R.raw.bbbbb));
vid.setMediaController(new MediaController(My_videos.this));
vid.requestFocus();
vid.start(); }
} }
答案 0 :(得分:0)
你在onItemCLik方法
中定义点击监听器时做错了在基本适配器的getView方法中为TextView和Button设置一个CLick Listener ....... i,e从OnItemClikc方法中删除所有点击监听器
public View getView(final int position, View convertView, ViewGroup parent) {
tf=Typeface.createFromAsset(context.getAssets(),"BFantezy.ttf");
LayoutInflater inflater = context.getLayoutInflater();
View rowView = inflater.inflate(R.layout.row, null, true);
TextView textView = (TextView) rowView.findViewById(R.id.row_label);
textView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// do what ever do want to ie open activity
//must use postion to get that item
}
});
Button bt1=(Button) rowView.findViewById(R.id.button1);
bt1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setClass(ListButton.this, My_videos.class);
//this will send the respective string to intent class ;
intent.putExtra("video", classes[position].toString);
}
});
return rowView; }}
答案 1 :(得分:0)
您正在设置侦听器不正确。为了使听众能够工作,您必须单击ListView
行一次以实际设置Buttons
和TextView
的听众。正确的方法是在布局视图时在getView
方法中设置侦听器。
首先删除onListItemClick
回调中的代码,然后修改适配器。我已经将您的适配器重写为更高效的版本(尽管可以进行更多改进)。由于代码很大,您可以在https://gist.github.com/3463215找到新的适配器。看看这是不是你想要的。
R.layout.video
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout android:layout_width="match_parent"
android:layout_height="wrap_content" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="One" />
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Two" />
<Button
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="three" />
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Four" />
<Button
android:id="@+id/button5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Five" />
</LinearLayout>
<VideoView
android:id="@+id/videoView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</LinearLayout>