Java 从适配器访问片段
这个想法是我有一个listview,其中每个项目都是一个产品,当我点击项目时,我需要转到listview适配器内的点击的另一个片段 我的适配器是:Java 从适配器访问片段,java,android,fragment,adapter,Java,Android,Fragment,Adapter,这个想法是我有一个listview,其中每个项目都是一个产品,当我点击项目时,我需要转到listview适配器内的点击的另一个片段 我的适配器是: package info.android.adapter; import info.android.ProductFragment; import info.android.R; import java.util.ArrayList; import android.app.Activity; import android.app.Fragmen
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;
}
}
package info.android.adapter;
导入info.android.ProductFragment;
导入info.android.R;
导入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;
公共类ProductOfferListAdapter扩展了BaseAdapter{
私人语境;
私人ArrayList导航器;
公共产品OfferListAdapter(上下文上下文,ArrayList){
this.context=上下文;
this.navProOffers=navProOffers;
}
@凌驾
public int getCount(){
返回navproof.size();
}
@凌驾
public info.android.model.ProductsOffers getItem(int位置){
返回navproof.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
if(convertView==null){
LayoutInflater mInflater=(LayoutInflater)context.getSystemService(Activity.LAYOUT\u INFLATER\u SERVICE);
convertView=mInflater.充气(R.layout.fragment_行,空);
}
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//我需要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);
字符串sVF=Double.toString(getItem(position).ValorFinal)+“€”;
txtVF.setText(sVF);
txtCiudad.setText(getItem(position).ciudad);
setText(getItem(position).codigo);
setTag(getItem(position).codigo);
setImageBitmap(getItem(position).Imagen);
返回视图;
}
}
你必须检查所有代码是否正常工作
如何转到适配器内的产品片段?您需要将其传递到构造函数中。 例如:
public class ProductOffersListAdapter extends BaseAdapter
{
private Context context;
private ArrayList<info.android.model.ProductsOffers> navProOffers;
Fragment myFragment;
public ProductOffersListAdapter(Context context, ArrayList<info.android.model.ProductsOffers> navProOffers, Fragment myFragment)
{
this.context = context;
this.myFragment = myFragment;
this.navProOffers = navProOffers;
}
...
公共类ProductOfferListAdapter扩展了BaseAdapter
{
私人语境;
私人ArrayList导航器;
片段myFragment;
公共产品OfferListAdapter(上下文上下文、ArrayList、片段myFragment)
{
this.context=上下文;
this.myFragment=myFragment;
this.navProOffers=navProOffers;
}
...
我解决这个问题的方法是:
Intent i = new Intent(v.getContext(), MainActivity.class);
i.putExtra("fragment_value", "2");
v.getContext().startActivity(i);
在main类中,我获取参数作为值,并使用开关在main中设置我感兴趣的片段。公共类ProductOfferListAdapter扩展了BaseAdapter{
私人语境;
私人ArrayList导航器;
公共产品OfferListAdapter(上下文上下文,ArrayList){
this.context=上下文;
this.navProOffers=navProOffers;
}
@凌驾
public int getCount(){
返回navproof.size();
}
@凌驾
public info.android.model.ProductsOffers getItem(int位置){
返回navproof.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
if(convertView==null){
LayoutInflater mInflater=(LayoutInflater)context.getSystemService(Activity.LAYOUT\u INFLATER\u SERVICE);
convertView=mInflater.充气(R.layout.fragment_行,空);
}
setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//我需要CLALL HERE FRAGMENT_PRODUCT.XML
//要调用片段,请使用以下命令
AppCompatActivity AppCompatActivity=(AppCompatActivity)v.getcontext();
FragmentManager FragmentManager=appCompatActivity.getSupportFragmentManager();
FragmentTransaction FragmentTransaction=fragmentManager.beginTransaction();
fragmentTransaction.replace(frameLayout.getId(),fragment);
fragmentTransaction.commit();
}
});
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);
字符串sVF=Double.toString(getItem(position).ValorFinal)+“€”;
txtVF.setText(sVF);
txtCiudad.setText(getItem(position).ciudad);
setText(getItem(position).codigo);
setTag(getItem(position).codigo);
setImageBitmap(getItem(position).Imagen);
返回视图;
}
}
和…如何在单击事件中显示片段?