通过从适配器类数据的新活动 [英] pass data to new activity from adapter class

查看:122
本文介绍了通过从适配器类数据的新活动的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我做了一个自定义列表视图具有图像和text.When U 点击图片它会引导你到新的activity.Now我想要的通图像和文字以新activity.i知道是 putExtra 方式你可以传递数据,但我不知道我怎么可以在这里使用它..
感谢的提前...
这里是我的code对于适配器类 ..

Note..I我从解析JSON数据

的onclick方法用于去另一个活动...

 公共类适配器扩展了BaseAdapter {私有静态最后弦乐TAG =适配器;
私人活动mActivity;
公众的ArrayList<数据> mObjects;
// /私人最终上下文的背景下;
上下文语境;静态类ViewHolder {
    静态ImageView的图标;
    TextView的称号;
    TextView的名称;
    TextView的审查;
    DownloadImageTask mTask;
    串AB [];
    // DownloadImageTask1 mTask1;
    // ImageView的照片;
}公共适配器(活动活动,上下文的背景下,ArrayList的<数据> mObjects){    this.mActivity =(活动)活动;
    this.context =背景;
    this.mObjects = mObjects;}公共无效setObjects(ArrayList的<数据> mObjects){
    this.mObjects = mObjects;
}@覆盖
公共查看getView(最终诠释的立场,观点convertView,父母的ViewGroup){    数据项= mObjects.get(位置);
    查看rowView = convertView;    如果(rowView == NULL){
        LayoutInflater吹气= mActivity.getLayoutInflater();
        rowView = inflater.inflate(R.layout.item,父母,假);
        ViewHolder viewHolder =新ViewHolder();
        viewHolder.icon =(ImageView的)rowView.findViewById(R.id.image);
        // viewHolder.photo =(ImageView的)rowView.findViewById(R.id.photo);
        viewHolder.title =(TextView中)rowView.findViewById(R.id.title);
        viewHolder.name =(TextView中)rowView.findViewById(R.id.name);        viewHolder.review =(TextView中)rowView.findViewById(R.id.status);
        rowView.setTag(viewHolder);
    }    ViewHolder支架=(ViewHolder)rowView.getTag();    holder.title.setText(item.getmTitle());
    holder.name.setText(item.getmConcatinate());    holder.review.setText(item.getmreview());
    holder.icon.setBackgroundResource(R.drawable.ic_ab);
    // holder.photo.setBackgroundResource(0);
    holder.mTask =新DownloadImageTask(item.getmImageUrl(),holder.icon);
    如果(!holder.mTask.isCancelled()){
        holder.mTask.execute();
    }    ViewHolder.icon.setOnClickListener(新OnClickListener(){        @覆盖
        公共无效的onClick(视图v){
            Log.d(解析JSON数据,用户try122222之前); //执行
                                                                    //动作
            意向意图=新意图(v.getContext(),LargeView.class);            。v.getContext()startActivity(意向);        }
    });    // holder.mTask1 =新DownloadImageTask1(item.getmImageUrl1()
    // holder.photo);
    //如果(!holder.mTask1.isCancelled()){
    // holder.mTask1.execute();
    //}    返回rowView;
}@覆盖
公众诠释的getCount(){    返回(this.mObjects.size());
}@覆盖
公共对象的getItem(INT位置){    回报(this.mObjects.get(位置));
}@覆盖
众长getItemId(INT位置){    返回(位置);
}公共AbsListView.RecyclerListener mRecyclerListener =新RecyclerListener(){    公共无效onMovedToScrapHeap(查看视图){
        ViewHolder viewHolder =(ViewHolder)view.getTag();
        DownloadImageTask imagetask = viewHolder.mTask;
        // DownloadImageTask1 imagetask1 = viewHolder.mTask1;
        如果(imagetask!= NULL){
            imagetask.cancel(真);
        }
        //如果(imagetask1!= NULL){
        // // imagetask1.cancel(真);
        //}
    }};

code主activity.class

  @覆盖
保护无效的onCreate(捆绑savedInstanceState){
    StrictMode.ThreadPolicy政策=新StrictMode.ThreadPolicy.Builder()
            。.detectAll()penaltyLog()建立()。
    StrictMode.setThreadPolicy(政策);    super.onCreate(savedInstanceState);
    的setContentView(R.layout.activity_profile3);    名=(的TextView)findViewById(R.id.textView1);
    bmImage2 =(ImageView的)findViewById(R.id.imageView1);
    地址=(的TextView)findViewById(R.id.textView2);
    性别=(的TextView)findViewById(R.id.textView3);
    loyalitypoints =(的TextView)findViewById(R.id.textView7);
    追随者=(的TextView)findViewById(R.id.textView8);
    下面=(的TextView)findViewById(R.id.textView9);
    // list13 =新的ArrayList<&HashMap的LT;弦乐,对象>>();
    mListView =(ListView控件)findViewById(android.R.id.list);
    mListView.setClickable(真);
    // mListView =(ListView控件)findViewById(R.id.list);
    mAdapter =新的适配器(这一点,C,mSource);
    mListView.setAdapter(mAdapter);
    Log.w(解析JSON数据,项单击之前);    mListView.setRecyclerListener(mAdapter.mRecyclerListener); }
        公共字符串getJSONfromURL(字符串URL){
    InputStream为= NULL;
    字符串结果=;    // HTTP POST
    尝试{
        HttpClient的HttpClient的=新DefaultHttpClient();
        HttpPost httppost =新HttpPost(URL);
        HTT presponse响应= httpclient.execute(httppost);
        HttpEntity实体= response.getEntity();
        是= entity.getContent();    }赶上(例外五){
        Log.e(log_tag,在HTTP连接错误+ e.toString());
    }    //响应转换为字符串
    尝试{
        读者的BufferedReader =新的BufferedReader(新的InputStreamReader(
                是,ISO-8859-1),8);
        StringBuilder的SB =新的StringBuilder();
        串线= NULL;
        而((行= reader.readLine())!= NULL){
            sb.append(行+\\ n);
        }
        is.close();
        结果= sb.toString();    }赶上(例外五){
        Log.e(log_tag,错误转换结果+ e.toString());
    }
    返回结果;
}


解决方案

用这种方式:

  ViewHolder.icon.setOnClickListener(新OnClickListener(){        @覆盖
        公共无效的onClick(视图v){
            Log.d(解析JSON数据,用户try122222之前); //执行
                                                                    //动作
            意向意图=新意图(背景下,LargeView.class);
            intent.putExtra(姓名,dhaval);
            context.startActivity(意向);        }
    });

在意图通过图像坏主意。只是通过URL,图片的路径,图像名称无论你有..

这样的:

 意向意图=新意图(背景下,LargeView.class);
intent.putExtra(姓名,dhaval);
intent.putExtra(imangeUTL,www.xyz.com/images/test.png);
context.startActivity(意向);

I made one custom listview with image and text.When u click on image it ll lead you to new activity.Now i want to pass image and text to new activity.i know with putExtra method you can pass data but i don't know how can i use it here.. thanks in advance... here is my code for adapter class..

Note..I am parsing data from json

Onclick method is used to go on another activity...

 public class Adapter extends BaseAdapter {

private static final String TAG = "Adapter";
private Activity mActivity;
public ArrayList<Data> mObjects;
// /private final Context context;
Context context;

static class ViewHolder {
    static ImageView icon;
    TextView title;
    TextView name;
    TextView review;
    DownloadImageTask mTask;
    String ab[];
    // DownloadImageTask1 mTask1;
    // ImageView photo;
}

public Adapter(Activity activity, Context context, ArrayList<Data> mObjects) {

    this.mActivity = (Activity) activity;
    this.context = context;
    this.mObjects = mObjects;

}

public void setObjects(ArrayList<Data> mObjects) {
    this.mObjects = mObjects;
}

@Override
public View getView(final 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.photo = (ImageView) rowView.findViewById(R.id.photo);
        viewHolder.title = (TextView) rowView.findViewById(R.id.title);
        viewHolder.name = (TextView) rowView.findViewById(R.id.name);

        viewHolder.review = (TextView) rowView.findViewById(R.id.status);
        rowView.setTag(viewHolder);
    }

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

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

    holder.review.setText(item.getmreview());
    holder.icon.setBackgroundResource(R.drawable.ic_ab);
    // holder.photo.setBackgroundResource(0);
    holder.mTask = new DownloadImageTask(item.getmImageUrl(), holder.icon);
    if (!holder.mTask.isCancelled()) {
        holder.mTask.execute();
    }

    ViewHolder.icon.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Log.d("Parsing JSON Data", "Before user try122222"); // perform
                                                                    // action
            Intent intent = new Intent(v.getContext(), LargeView.class);

            v.getContext().startActivity(intent);

        }
    });

    // holder.mTask1 = new DownloadImageTask1(item.getmImageUrl1(),
    // holder.photo);
    // if (!holder.mTask1.isCancelled()) {
    // holder.mTask1.execute();
    // }

    return rowView;
}

@Override
public int getCount() {

    return (this.mObjects.size());
}

@Override
public Object getItem(int position) {

    return (this.mObjects.get(position));
}

@Override
public long getItemId(int position) {

    return (position);
}

public AbsListView.RecyclerListener mRecyclerListener = new RecyclerListener() {

    public void onMovedToScrapHeap(View view) {
        ViewHolder viewHolder = (ViewHolder) view.getTag();
        DownloadImageTask imagetask = viewHolder.mTask;
        // DownloadImageTask1 imagetask1 = viewHolder.mTask1;
        if (imagetask != null) {
            imagetask.cancel(true);
        }
        // if (imagetask1 != null) {
        // // imagetask1.cancel(true);
        // }
    }

};

code in main activity.class

     @Override
protected void onCreate(Bundle savedInstanceState) {
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
            .detectAll().penaltyLog().build();
    StrictMode.setThreadPolicy(policy);

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_profile3);

    name = (TextView) findViewById(R.id.textView1);
    bmImage2 = (ImageView) findViewById(R.id.imageView1);
    address = (TextView) findViewById(R.id.textView2);
    gender = (TextView) findViewById(R.id.textView3);
    loyalitypoints = (TextView) findViewById(R.id.textView7);
    followers = (TextView) findViewById(R.id.textView8);
    following = (TextView) findViewById(R.id.textView9);
    // list13 = new ArrayList<HashMap<String, Object>>();
    mListView = (ListView) findViewById(android.R.id.list);
    mListView.setClickable(true);






    // mListView=(ListView)findViewById(R.id.list);
    mAdapter = new Adapter(this,c,mSource );
    mListView.setAdapter(mAdapter);
    Log.w("Parsing JSON Data", "Before Item click");

    mListView.setRecyclerListener(mAdapter.mRecyclerListener);

 }


        public String getJSONfromURL(String url) {
    InputStream is = null;
    String result = "";

    // http post
    try {
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(url);
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        is = entity.getContent();

    } catch (Exception e) {
        Log.e("log_tag", "Error in http connection " + e.toString());
    }

    // convert response to string
    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(
                is, "iso-8859-1"), 8);
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
        is.close();
        result = sb.toString();

    } catch (Exception e) {
        Log.e("log_tag", "Error converting result " + e.toString());
    }
    return result;
}

解决方案

use this way:

ViewHolder.icon.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Log.d("Parsing JSON Data", "Before user try122222"); // perform
                                                                    // action
            Intent intent = new Intent(context, LargeView.class);
            intent.putExtra("name", "dhaval");
            context.startActivity(intent);

        }
    });

pass image in intent is BAD idea. just pass URL, Image Path, image name whatever you have..

like:

Intent intent = new Intent(context, LargeView.class);
intent.putExtra("name", "dhaval");
intent.putExtra("imangeUTL", "www.xyz.com/images/test.png");
context.startActivity(intent);

这篇关于通过从适配器类数据的新活动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆