Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用LazyAdapter和getAdapter()时出现问题_Android_Android Intent_Hashmap_Onclicklistener_Android Lazyadapter - Fatal编程技术网

Android 使用LazyAdapter和getAdapter()时出现问题

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

我无法将数据发送到第二个活动。 mainactivity必须向第二个活动发送img url和img标题,但不发送。 在gridview中,我看到了它们。 但是给我空数据,我不知道为什么

主要活动:(单击侦听器)

//单击单个列表行的事件
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(位置)
to
HashMap 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);
             }
         });
    }   
}