0

我想为我的 ListView 中的每个项目创建一个新的意图。但首先我想看看数据 holder.title 是否可以通过日志读取。这不可以。我尝试使用 Toast,但在 makeText() 上也收到错误。

我的代码有什么问题?我不是java程序员,如果这是一个简单的问题,请原谅我。

此代码基于如何解析 Sub JSONArray 并显示图像?

我已经修改了一些代码,但我有足够的信心它不会影响这部分代码。

@Override
    public View getView(int position, View convertView, ViewGroup parent) {

        Data item = mObjects.get(position);
        View rowView = convertView;

        if (rowView == null) {
            LayoutInflater inflater = mActivity.getLayoutInflater();
            rowView = inflater.inflate(R.layout.item, parent, false);
            ViewHolder viewHolder = new ViewHolder();
            viewHolder.icon = (ImageView) rowView.findViewById(R.id.image);
            viewHolder.title = (TextView) rowView.findViewById(R.id.title);
            rowView.setTag(viewHolder);
        }

        ViewHolder holder = (ViewHolder) rowView.getTag();

        holder.title.setText(item.getmTitle());



        item.setOnClickListener(new OnItemClickListener() {

            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {

//Intent to be here. Now I am testing to see if data can be passed but it can't
                Log.e("log_tag","This is being clicked");
            }
        });

        holder.icon.setBackgroundResource(R.drawable.ic_launcher);
        holder.mTask = new DownloadImageTask(item.getmImageUrl(), holder.icon);
        if (!holder.mTask.isCancelled()) {
            holder.mTask.execute();
        }


        return rowView;
    }

已编辑!我为上面的代码尝试了几个小时,但看起来毫无希望。所以我研究了 MainActivity 类。至少有一些东西出来了。当我单击列表项时,正在显示“正在单击”。但是我仍然无法在单击时显示任何 JSON 数据。我想知道我如何从这里做意图。

再次编辑。

在网上看到更多代码后,我更改了一些代码。而且还是卡住了。

mListView = (ListView) findViewById(android.R.id.list);
mAdapter = new Adapter(this, mSource);
mListView.setAdapter(mAdapter);

mListView.setOnItemClickListener(new OnItemClickListener() {

    //private Object title;
    @Override
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {

        @SuppressWarnings("unchecked")
        HashMap<String, String> o = (HashMap<String, String>) mListView.getItemAtPosition(position);  
        //Selected item
        //String product = ((TextView) View).getText().toString();
        Toast.makeText(getApplicationContext(),o.get("title"), Toast.LENGTH_LONG).show();


    }
});
4

1 回答 1

0

请按照以下步骤操作:

1 . 创建 getter 和 setter 方法的 bean 类。

2 . 创建一个数组列表。

3 . 将值存储到 bean 类中。

4 . 将 bean 类对象添加到 arraylist。

5 . 现在,单击列表视图项,使用 . 传递 bean 类对象putExtra

走这条路。

编辑:

豆类:

 public class ActivitiesBean implements Serializable{


/**
 * 
 */
private static final long serialVersionUID = 1L;

public String title;
public String image;
........ 

public String getTitle() {
    return title;
}
public void setTitle(String title) {
    this.title = title;
}
public String getImage() {
    return image;
}
public void setImage(String image) {
    this.image = image;
}

..............


}

Java类:

 ActivitiesBean bean;
ArrayList<Object> listActivities = new ArrayList<Object>();

............................



 public class FetchActivitesTask extends AsyncTask<Void, Void, Void> {

    int i =0;
    @Override
    protected void onPreExecute() {
        // TODO Auto-generated method stub
        super.onPreExecute();
         pgb.setVisibility(View.VISIBLE);
    }

    @Override
    protected Void doInBackground(Void... params) {
        // TODO Auto-generated method stub

         ............

                    Here your JSON code

            for (i = 0; i < jsonnodes.length(); i++) 
            {


                JSONObject jsonnode = jsonnodes.getJSONObject(i); 

                JSONObject jsonnodevalue = jsonnode.getJSONObject(node);

                bean = new ActivitiesBean();

                bean.title = jsonnodevalue.getString(title);
                bean.image = jsonnodevalue.getString(image_fid);

                                    .....................  


                listActivities.add(bean);


            }               
        }
        catch (JSONException e) {

            e.printStackTrace();
      }

        return null;
    }

    @Override
    public void onPostExecute(Void result) {
        // TODO Auto-generated method stub
        super.onPostExecute(result);

        pgb.setVisibility(View.GONE);
        displayAdapter();
    }
}

public void displayAdapter()
{
    adapter = new ActivityAdapter(this, listActivities);
    contests_listView.setAdapter(adapter);
    contests_listView.setOnItemClickListener(new OnItemClickListener() {

        //@Override
        public void onItemClick(AdapterView<?> arg0, View arg1,
                int position, long id) {

            bean = (ActivitiesBean) adapter.getItem(position);

            Intent in1 = new Intent(Activites_Activity.this, Activity_display.class);
            in1.putExtra("ActivityObject", bean);
            startActivity(in1);
        }

    });

}
于 2013-02-07T03:55:07.367 回答