这是我的代码 – 一切.我按照你的说法做了,但我仍然无法点击任何东西.我的意思是我可以点击但没有任何反应
package fixus.core;
import java.util.ArrayList;
import java.util.Iterator;
import android.app.ListActivity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.AdapterView.OnItemClickListener;
import fixus.lib.News;
import fixus.testing.DataInput;
public class NewserActivity extends ListActivity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
DataInput di = new DataInput();
ArrayList news = di.getNews();
NewsArrayAdapter naa = new NewsArrayAdapter(NewserActivity.this, R.layout.row, news);
setListAdapter(naa);
ListView lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView parent, View view,
int position, long id) {
Log.i("testy", "I Clicked on Row " + position + " and it worked!");
}
});
}
@Override
/**
* When the user selects an item in the list, do an action
* @param ListView l
* @param View v
* @param int position
* @param long id
*/
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
final int index = position;
//You can add whatever you want to happen when you click here
Log.i("testy", "I Clicked on Row " + index + " and it worked!");
}
private class NewsArrayAdapter extends ArrayAdapter {
protected ArrayList items;
public NewsArrayAdapter(Context context, int textViewResourceId, ArrayList items) {
super(context, textViewResourceId, items);
this.items = items;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if(v == null) {
LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
v = vi.inflate(R.layout.row, null);
}
News news = this.items.get(position);
if(news != null) {
TextView tt = (TextView) v.findViewById(R.id.toptext);
TextView bt = (TextView) v.findViewById(R.id.bottomtext);
if (tt != null) {
tt.setText("Name: "+ news.getName());
}
if(bt != null){
bt.setText("Status: "+ news.getUrl().toString());
}
}
return v;
}
}
}
如果你知道一个很好的教程/例子,它会向我展示我希望看到它的好方法:)
解决方法:
在列表活动中,您应该执行的操作类似于以下内容:
public class YourClass extends ListActivity {
//Your Variables
ArrayList yourlist;
YourAdapterClass adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
yourlist = new ArrayList();
this.adapter = new YourAdapterClass(this, R.layout.row, yourlist);
setListAdapter(this.adapter);
//you might be able to see if the below works instead of overriding
ListView lv = getListView();
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView> parent, View view,
int position, long id) {
Log.i("testy", "I Clicked on Row " + position + " and it worked!");
}
});
}
@Override
/**
* When the user selects an item in the list, do an action
* @param ListView l
* @param View v
* @param int position
* @param long id
*/
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
final int index = position;
//You can add whatever you want to happen when you click here
Log.i("testy", "I Clicked on Row " + index + " and it worked!");
}
//other methods can go here for you list
}
您不希望在List Adapter中的getView(…)方法中使用onClickListener,这就是您想要修改行的方式(为每行添加按钮,文本字段等)的位置您希望在扩展连接到适配器的ListActivity的类中使用onClickListener
祝你好运,希望这有帮助
//编辑(添加更多信息)
你需要在onCreate方法中“将它添加到你的适配器”(参见上面的编辑代码)希望这应该可以解决问题.如果它仍然不起作用,请告诉我.如果这不起作用你可以尝试使用我在onCreate方法中放入的setOnItemClickListener代码,如果仍然无法工作,我会尝试查看一些教程(我会看看我是否能找到一个好教程)
标签:android
来源: https://codeday.me/bug/20190610/1210410.html