Android 使用LazyAdapter和getAdapter()时出现问题
我无法将数据发送到第二个活动。 mainactivity必须向第二个活动发送img url和img标题,但不发送。 在gridview中,我看到了它们。 但是给我空数据,我不知道为什么 主要活动:(单击侦听器)Android 使用LazyAdapter和getAdapter()时出现问题,android,android-intent,hashmap,onclicklistener,android-lazyadapter,Android,Android Intent,Hashmap,Onclicklistener,Android Lazyadapter,我无法将数据发送到第二个活动。 mainactivity必须向第二个活动发送img url和img标题,但不发送。 在gridview中,我看到了它们。 但是给我空数据,我不知道为什么 主要活动:(单击侦听器) //单击单个列表行的事件 setOnItemClickListener(新的OnItemClickListener(){ @抑制警告(“未选中”) @凌驾 public void onItemClick(AdapterView父级、视图、, 内部位置,长id){ HashMap map2
//单击单个列表行的事件
setOnItemClickListener(新的OnItemClickListener(){
@抑制警告(“未选中”)
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
HashMap map2=(HashMap)gridView.getAdapter().getItem(位置);
Intent in=newintent(getApplicationContext(),FullSize.class);
in.putExtra(KEY_THUMB_URL,map2.get(KEY_THUMB_URL));
in.putExtra(KEY_TITLE,map2.get(KEY_TITLE));
星触觉(in);
}
});
懒汉:
public class LazyAdapter extends BaseAdapter {
private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;
public ImageLoader imageLoader;
public LazyAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
activity = a;
data=d;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader=new ImageLoader(activity.getApplicationContext());
}
public int getCount() {
return data.size();
}
public Object getItem(int position) {
return data.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.grid_row, null);
TextView title = (TextView)vi.findViewById(R.id.title2); // title
ImageView thumb_image=(ImageView)vi.findViewById(R.id.list_image2); // thumb image
HashMap<String, String> song = new HashMap<String, String>();
song = data.get(position);
// Setting all values in listview
title.setText(song.get(CustomizedListView.KEY_TITLE));
imageLoader.DisplayImage(song.get(CustomizedListView.KEY_THUMB_URL), thumb_image);
return vi;
}
public ImageLoader getImageLoader() {
return imageLoader;
}
}
公共类LazyAdapter扩展了BaseAdapter{
私人活动;
私有数组列表数据;
专用静态充气机=空;
公共图像加载器;
公共LazyAdapter(活动a,ArrayList d){
活动=a;
数据=d;
充气器=(LayoutInflater)activity.getSystemService(Context.LAYOUT\u充气器\u SERVICE);
imageLoader=新的imageLoader(activity.getApplicationContext());
}
public int getCount(){
返回data.size();
}
公共对象getItem(int位置){
返回数据。获取(位置);
}
公共长getItemId(int位置){
返回位置;
}
公共视图getView(int位置、视图转换视图、视图组父视图){
视图vi=转换视图;
if(convertView==null)
vi=充气机。充气(R.layout.grid_行,空);
TextView title=(TextView)vi.findViewById(R.id.title2);//title
ImageView thumb_image=(ImageView)vi.findViewById(R.id.list_image2);//thumb image
HashMap宋=新HashMap();
宋=数据。获取(位置);
//在listview中设置所有值
title.setText(song.get(CustomizedListView.KEY_title));
imageLoader.DisplayImage(song.get(CustomizedListView.KEY\u THUMB\u URL)、THUMB\u image);
返回vi;
}
公共ImageLoader getImageLoader(){
返回图像加载器;
}
}
全部主要活动:
public class CustomizedListView extends Activity {
// All static variables
static final String URL = "http://mysite .com/images/rss.xml";
// XML node keys
static final String KEY_SONG = "song"; // parent node
static final String KEY_ID = "id";
static final String KEY_TITLE = "item";
static final String KEY_THUMB_URL = "thumb_url";
GridView gridView;
LazyAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
XMLParser parser = new XMLParser();
String xml = parser.getXmlFromUrl(URL); // getting XML from URL
Document doc = parser.getDomElement(xml); // getting DOM element
NodeList nl = doc.getElementsByTagName(KEY_SONG);
// looping through all song nodes <song>
for (int i = 0; i < nl.getLength(); i++) {
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
// adding each child node to HashMap key => value
map.put(KEY_ID, parser.getValue(e, KEY_ID));
map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE));
map.put(KEY_THUMB_URL, parser.getValue(e, KEY_THUMB_URL));
// adding HashList to ArrayList
songsList.add(map);
}
gridView= (GridView) this.findViewById(R.id.list2);
// Getting adapter by passing xml data ArrayList
adapter=new LazyAdapter(this, songsList);
gridView.setAdapter(adapter);
// Click event for single list row
gridView.setOnItemClickListener(new OnItemClickListener() {
@SuppressWarnings("unchecked")
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
HashMap<String, String> map2 = (HashMap<String, String>) gridView.getAdapter().getItem(position);
Intent in = new Intent(getApplicationContext(), FullSize.class);
in.putExtra(KEY_THUMB_URL, map2.get(KEY_THUMB_URL));
in.putExtra(KEY_TITLE, map2.get(KEY_TITLE));
startActivity(in);
}
});
}
}
public类CustomizedListView扩展活动{
//所有静态变量
静态最终字符串URL=”http://mysite .com/images/rss.xml”;
//XML节点密钥
静态最终字符串键\u SONG=“SONG”//父节点
静态最终字符串键\u ID=“ID”;
静态最终字符串键\u TITLE=“item”;
静态最终字符串键\u THUMB\u URL=“THUMB\u URL”;
GridView;
懒散适配器;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
ArrayList songsList=新的ArrayList();
XMLParser=新的XMLParser();
字符串xml=parser.getXmlFromUrl(URL);//从URL获取xml
Document doc=parser.getDomeElement(xml);//获取DOM元素
NodeList nl=doc.getElementsByTagName(KEY_-SONG);
//循环通过所有歌曲节点
对于(int i=0;ivalue
put(KEY_ID,parser.getValue(e,KEY_ID));
put(KEY_TITLE,parser.getValue(e,KEY_TITLE));
put(KEY_THUMB_URL,parser.getValue(e,KEY_THUMB_URL));
//将哈希列表添加到ArrayList
歌曲列表。添加(地图);
}
gridView=(gridView)this.findViewById(R.id.list2);
//通过传递xml数据ArrayList获取适配器
adapter=新的LazyAdapter(此,songsList);
setAdapter(适配器);
//单击单个列表行的事件
setOnItemClickListener(新的OnItemClickListener(){
@抑制警告(“未选中”)
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
HashMap map2=(HashMap)gridView.getAdapter().getItem(位置);
Intent in=newintent(getApplicationContext(),FullSize.class);
in.putExtra(KEY_THUMB_URL,map2.get(KEY_THUMB_URL));
in.putExtra(KEY_TITLE,map2.get(KEY_TITLE));
星触觉(in);
}
});
}
}
您正在第二次活动中访问您的额外错误。钥匙不是“钥匙标题”
,而是“项目”
。删除引号并访问变量KEY\u TITLE
是否已检查数据是否已成功从onItemClicked()方法中的HashMap
提取?尝试更改HashMap map2=(HashMap)gridView.getAdapter().getItem(位置)
toHashMap map2=(HashMap)parent.getItemAtPosition(position)代码>@NasaGeek不,还是一样。但如何记录单击后退出的数据?因为它似乎什么都不需要。我以前尝试过,但只看到null.null数据。您可以使用Log.d()
方法将您想要的任何内容写入设备的logcat。您确定正在第二个活动中访问必要的数据吗?@NasaGeek这是第二个活动,对于第二个活动中的测试,我正在尝试设置txt。你怎么认为?是吗?谢谢,你说得对,但之后我遇到了另一个问题,如果你有时间,你能检查一下吗?这是相似的,但关于图像
public class CustomizedListView extends Activity {
// All static variables
static final String URL = "http://mysite .com/images/rss.xml";
// XML node keys
static final String KEY_SONG = "song"; // parent node
static final String KEY_ID = "id";
static final String KEY_TITLE = "item";
static final String KEY_THUMB_URL = "thumb_url";
GridView gridView;
LazyAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
XMLParser parser = new XMLParser();
String xml = parser.getXmlFromUrl(URL); // getting XML from URL
Document doc = parser.getDomElement(xml); // getting DOM element
NodeList nl = doc.getElementsByTagName(KEY_SONG);
// looping through all song nodes <song>
for (int i = 0; i < nl.getLength(); i++) {
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(i);
// adding each child node to HashMap key => value
map.put(KEY_ID, parser.getValue(e, KEY_ID));
map.put(KEY_TITLE, parser.getValue(e, KEY_TITLE));
map.put(KEY_THUMB_URL, parser.getValue(e, KEY_THUMB_URL));
// adding HashList to ArrayList
songsList.add(map);
}
gridView= (GridView) this.findViewById(R.id.list2);
// Getting adapter by passing xml data ArrayList
adapter=new LazyAdapter(this, songsList);
gridView.setAdapter(adapter);
// Click event for single list row
gridView.setOnItemClickListener(new OnItemClickListener() {
@SuppressWarnings("unchecked")
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
HashMap<String, String> map2 = (HashMap<String, String>) gridView.getAdapter().getItem(position);
Intent in = new Intent(getApplicationContext(), FullSize.class);
in.putExtra(KEY_THUMB_URL, map2.get(KEY_THUMB_URL));
in.putExtra(KEY_TITLE, map2.get(KEY_TITLE));
startActivity(in);
}
});
}
}