从适配器访问片段 [英] Access fragment from adapter

查看:176
本文介绍了从适配器访问片段的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这个想法是我有一个列表视图,其中每个项目是一个产品,当我点击该项目时,我需要从列表视图的适配器内的点击转到另一个片段。



我的适配器是:

  package info.android.adapter; 

导入info.android.ProductFragment;
导入info.android.R;

import java.util.ArrayList;

导入android.app.Activity;
导入android.app.Fragment;
导入android.app.FragmentTransaction;
导入android.content.Context;
导入android.view.LayoutInflater;
导入android.view.View;
导入android.view.View.OnClickListener;
导入android.view.ViewGroup;
导入android.widget.BaseAdapter;
导入android.widget.ImageView;
导入android.widget.TextView;

public class ProductOffersListAdapter extends BaseAdapter {

private context context;
private ArrayList< info.android.model.ProductsOffers> navProOffers;

public ProductOffersListAdapter(Context context,ArrayList< info.android.model.ProductsOffers> navProOffers){
this.context = context;
this.navProOffers = navProOffers;
}

@Override
public int getCount(){
return navProOffers.size();
}

@Override
public info.android.model.ProductsOffers getItem(int position){
return navProOffers.get(position);
}

@Override
public long getItemId(int position){
return position;

$ b @Override
public View getView(int position,View convertView,ViewGroup parent){
if(convertView == null){
LayoutInflater mInflater =(LayoutInflater)context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
convertView = mInflater.inflate(R.layout.fragment_row,null);


convertView.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
// I need CLALL HERE FRAGMENT_PRODUCT.XML
}
});

ImageView img =(ImageView)convertView.findViewById(R.id.image);

TextView txtCodigo =(TextView)convertView.findViewById(R.id.txtCodigo);
TextView txtCiudad =(TextView)convertView.findViewById(R.id.txtCiudad);
TextView txtVF =(TextView)convertView.findViewById(R.id.txtVF);

String sVF = Double.toString(getItem(position).ValorFinal)+€;

txtVF.setText(sVF);
txtCiudad.setText(getItem(position).ciudad);
txtCodigo.setText(getItem(position).codigo);

convertView.setTag(getItem(position).codigo);

img.setImageBitmap(getItem(position).Imagen);

返回convertView;


你必须假设所有代码正在工作。 p>

如何在产品Fragment内部使用适配器?

解决方案

我做了什么来解决这个问题:

  Intent i = new Intent(v.getContext(),MainActivity.class); 
i.putExtra(fragment_value,2);
v.getContext()。startActivity(i);

在主类中,我获取参数作为值,感兴趣。

The idea is i have a listview where each item is a product, when I click in the item, I need to go to another Fragment from the click which is inside the adapter of the listview.

My adapter is:

package info.android.adapter;

import info.android.ProductFragment;
import info.android.R;

import java.util.ArrayList;

import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentTransaction;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class ProductOffersListAdapter extends BaseAdapter {

    private Context context;
    private ArrayList<info.android.model.ProductsOffers> navProOffers;

    public ProductOffersListAdapter(Context context, ArrayList<info.android.model.ProductsOffers> navProOffers) {
        this.context = context;
        this.navProOffers = navProOffers;
    }

    @Override
    public int getCount() {
        return navProOffers.size();     
    }

    @Override
    public info.android.model.ProductsOffers getItem(int position) {        
        return navProOffers.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            LayoutInflater mInflater = (LayoutInflater) context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
            convertView = mInflater.inflate(R.layout.fragment_row, null);
        }

        convertView.setOnClickListener(new OnClickListener() {
              @Override
              public void onClick(View v) {
                          // I NEED CLALL HERE FRAGMENT_PRODUCT.XML                             
              }
            });

        ImageView img = (ImageView) convertView.findViewById(R.id.image); 

        TextView txtCodigo = (TextView) convertView.findViewById(R.id.txtCodigo);
        TextView txtCiudad = (TextView) convertView.findViewById(R.id.txtCiudad);               
        TextView txtVF = (TextView) convertView.findViewById(R.id.txtVF);

        String sVF =  Double.toString(getItem(position).ValorFinal) + "€";  

        txtVF.setText(sVF);
        txtCiudad.setText(getItem(position).ciudad);
        txtCodigo.setText(getItem(position).codigo);

        convertView.setTag(getItem(position).codigo);

        img.setImageBitmap(getItem(position).Imagen);

        return convertView;
    }
}

You have to asume all code is working.

How can I go to the product Fragment inside the adapter?

解决方案

What I did to resolve this is:

Intent i = new Intent(v.getContext(), MainActivity.class);                      
i.putExtra("fragment_value", "2");
v.getContext().startActivity(i);

In main class I get the parameter as value and with a switch I set fragment in main which I am interested.

这篇关于从适配器访问片段的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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