Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.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
Java 从自定义适配器获取父布局_Java_Android_Listview_Adapter_Custom Adapter - Fatal编程技术网

Java 从自定义适配器获取父布局

Java 从自定义适配器获取父布局,java,android,listview,adapter,custom-adapter,Java,Android,Listview,Adapter,Custom Adapter,有人能解释一下我是如何认识到的吗? 我有一个包含listview和footer的活动,其中包含一些元素(textview) 使用自定义适配器构建的Listview。每个listview项都有几个元素。我的问题是:当我单击某个listview的元素时,如何从自定义适配器更改页脚中的textview 太多了 /****我的适配器****/ public class MyListAdapter extends ArrayAdapter<Product> implements UndoAda

有人能解释一下我是如何认识到的吗? 我有一个包含listview和footer的活动,其中包含一些元素(textview)

使用自定义适配器构建的Listview。每个listview项都有几个元素。我的问题是:当我单击某个listview的元素时,如何从自定义适配器更改页脚中的textview

太多了

/****我的适配器****/

public class MyListAdapter extends ArrayAdapter<Product> implements UndoAdapter {

    private final Context mContext;
    private HashMap<Product, Integer> mIdMap = new HashMap<Product, Integer>();
    ArrayList<Product> products = new ArrayList<Product>();
    final int INVALID_ID = -1;
    LayoutInflater lInflater;
    String imagePath;

    public MyListAdapter(Context context, int textViewResourceId, List<Product> prod) {
        //super(context, textViewResourceId, prod);
        super(prod);
        lInflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        mContext = context;
        for (int i = 0; i < prod.size(); i++) {
            //add(prod.get(i));
            mIdMap.put(prod.get(i),i);
        }
    }

    @Override
    public long getItemId(final int position) {
        //return getItem(position).hashCode();
        Product item = (Product) getItem(position);
        return mIdMap.get(item);
    }

    @Override
    public boolean hasStableIds() {
        return true;
    }

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

        ViewHolder holder = null;;
        Product p = getItem(position);

        if (convertView == null) {

            convertView = lInflater.inflate(R.layout.item, null);
            //convertView.setBackgroundResource(R.drawable.rounded_corners);

            int currentTheme = Utils.getCurrentTheme(convertView.getContext());
            switch (currentTheme) {

                case 0:
                        convertView.setBackgroundResource(R.drawable.rounded_corners);
                    break;
                case 1:
                        convertView.setBackgroundResource(R.drawable.border);
                    break;
                default:
                        convertView.setBackgroundResource(R.drawable.rounded_corners);
                    break;

            }

            holder = new ViewHolder();

            holder.tvDescr = (TextView) convertView.findViewById(R.id.tvDescr);
            holder.list_image = (ImageView) convertView.findViewById(R.id.list_image);
            holder.products_amount = (TextView) convertView.findViewById(R.id.amountDigits);
            holder.products_price = (TextView) convertView.findViewById(R.id.priceDigits);
            holder.ivImage = (ImageView) convertView.findViewById(R.id.ivImage);
            holder.unit = (TextView) convertView.findViewById(R.id.unit);

            convertView.setTag(holder);

        } else {

            holder = (ViewHolder) convertView.getTag();

        }


        if(p.getProductImageBitmap() != null && p.getProductImageBitmap() != "") {
            Log.d("PATH -- ", p.getProductImageBitmap());
            ImageLoader imageLoader = ImageLoader.getInstance();
            DisplayImageOptions options = new DisplayImageOptions.Builder().cacheInMemory(true)
                    .resetViewBeforeLoading(true)
                    .showImageForEmptyUri(R.drawable.ic_launcher)
                    .showImageOnFail(R.drawable.ic_launcher)
                                                                        /*.showImageOnLoading(R.id.progress_circular)*/
                    .build();
            imageLoader.displayImage(p.getProductImageBitmap(), holder.list_image, options);
        } else {
            holder.list_image.setImageResource(R.drawable.ic_launcher);
        }


        holder.tvDescr.setText(p.getProductName());

        holder.ivImage.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                String deletedItem = getItem(position).getProductName();
                MyListAdapter.this.remove(getItem(position));

                if (MyListAdapter.this.getCount() > 0) {

                    Toast.makeText(mContext, deletedItem + " " + mContext.getString(R.string.deleted_item), Toast.LENGTH_SHORT).show();
                    MyListAdapter.this.notifyDataSetChanged();

                } else {

                    Toast.makeText(mContext,mContext.getString(R.string.sklerolist_empty), Toast.LENGTH_SHORT).show();

                }

            }
        });

        //Функционал для большой картинки продукта
        //открывается новое активити с большой картинкой
        holder.list_image.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                imagePath = getItem(position).getProductImageBitmap();
                if(imagePath != null && imagePath != "") {
                    Pattern normalPrice = Pattern.compile("^file");
                    Matcher m2 = normalPrice.matcher(imagePath);
                    if (m2.find()) {
                        Intent myIntent = new Intent(view.getContext(), ViewImage.class).putExtra("imagePath", imagePath);
                        view.getContext().startActivity(myIntent);
                    }
                }
            }
        });

        holder.products_price.setText(fmt(p.getProductPrice()));
        holder.products_amount.setText(fmt(p.getProductAmount()));
        holder.unit.setText(p.getProductUnit());

        return convertView;
    }

    public static String fmt(double d){
        if(d == (long) d)
            return String.format("%d",(long)d);
        else
            return String.format("%s",d);
    }

    static class ViewHolder {
        ImageView list_image;
        TextView tvDescr;
        TextView products_amount;
        TextView products_price;
        TextView unit;
        ImageView ivImage;
        ProgressBar circleProgress;
    }

    @NonNull
    @Override
    public View getUndoView(final int position, final View convertView, @NonNull final ViewGroup parent) {
        View view = convertView;
        if (view == null) {
            //view = LayoutInflater.from(mContext).inflate(R.layout.undo_row, parent, false);
            view = lInflater.inflate(R.layout.undo_row, parent, false);
        }
        return view;
    }

    @NonNull
    @Override
    public View getUndoClickView(@NonNull final View view) {
        return view.findViewById(R.id.undo_row_undobutton);
    }

    public View getHeaderView(final int position, final View convertView, final ViewGroup parent) {
        TextView view = (TextView) convertView;
        //View view = convertView;
        if (view == null) {
            //view = (TextView) LayoutInflater.from(mContext).inflate(R.layout.list_header, parent, false);
            //view = lInflater.inflate(R.layout.list_header, parent, false);
        }

        //view.setText(mContext.getString(R.string.header, getHeaderId(position)));

        return view;
    }

    public long getHeaderId(final int position) {
        return position / 10;
    }

}
公共类MyListAdapter扩展ArrayAdapter实现UndoAdapter{
私有最终上下文mContext;
私有HashMap mIdMap=新HashMap();
ArrayList产品=新的ArrayList();
final int INVALID_ID=-1;
拉平机;
字符串图像路径;
公共MyListAdapter(上下文上下文、int textViewResourceId、列表产品){
//super(上下文、textViewResourceId、prod);
超级(prod);
lInflater=(LayoutInflater)上下文
.getSystemService(上下文布局\充气机\服务);
mContext=上下文;
对于(int i=0;i0){
Toast.makeText(mContext,deletedItem+“”+mContext.getString(R.string.deleted_item),Toast.LENGTH_SHORT.show();
MyListAdapter.this.notifyDataSetChanged();
}否则{
Toast.makeText(mContext,mContext.getString(R.string.sklerolist_empty),Toast.LENGTH_SHORT.show();
}
}
});
//Функционал для большой картинки продукта
//открывается новое активити с большой картинкой
holder.list\u image.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
imagePath=getItem(位置).getProductImageBitmap();
if(imagePath!=null&&imagePath!=“”){
模式normalPrice=Pattern.compile(“^file”);
匹配器m2=正常价格。匹配器(imagePath);
if(m2.find()){
Intent myIntent=newintent(view.getContext(),ViewImage.class).putExtra(“imagePath”,imagePath);
view.getContext().startActivity(myIntent);
}
}
}
});
holder.products_price.setText(fmt(p.getProductPrice());
holder.products_amount.setText(fmt(p.getProductAmount());
holder.unit.setText(p.getProductUnit());
返回视图;
}
公共静态字符串fmt(双d){
如果(d==(长)d)
返回字符串。格式(“%d”,(长)d);
其他的
返回字符串。格式(“%s”,d);
}
静态类视窗夹{
图像视图列表\图像;
文本视图tvDescr;
TextView产品数量;
text查看产品价格;
文本视图单元;
@Override  
public void onListItemClick(ListView l, View v, int position, long id) {
    // Do something when a list item is clicked 
} 
public interface OnItemClickedCustomAdapter {
   public void onClick(ItemPosition position);
}
private OnItemClickedCustomAdapter mListener;
public void setOnItemClickedCustomAdapter(OnItemClickedCustomAdapter listener){
    this.mListener = listener;
}