-1

我在每个 listview 项目行中使用图像按钮,并尝试使用 Button onClick 侦听器启动新活动,但得到:- 源附件不包含 ComponentName.class 的源

package com.example.androidhive;

public class LazyAdapter extends BaseAdapter {

protected static final Context Context = null;
private Activity activity;
private ArrayList<HashMap<String, String>> data;
private static LayoutInflater inflater=null;
public ImageLoader imageLoader; 

public LazyAdapter(Activity a, ArrayList<HashMap<String, String>> d) {
    activity = a;
    data=d;
    inflater = (LayoutInflater)activity.
  getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    imageLoader=new ImageLoader(activity.getApplicationContext());
}

public int getCount() {
    return data.size();
}

public Object getItem(int position) {
    return position;
}

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

public View getView(int position, View convertView, ViewGroup parent) {
    View vi=convertView;
    if(convertView==null)
        vi = inflater.inflate(R.layout.list_row, null);

    TextView title = (TextView)vi.findViewById(R.id.title); 
    TextView artist = (TextView)vi.findViewById(R.id.description); 
    TextView duration = (TextView)vi.findViewById(R.id.cost); 
    TextView regular = (TextView)vi.findViewById(R.id.regular); 
    TextView small = (TextView)vi.findViewById(R.id.small); 
    TextView large = (TextView)vi.findViewById(R.id.large); 
    ImageView thumb_image=(ImageView)vi.findViewById(R.id.item_image); 
    ImageButton btn_add=(ImageButton)vi.findViewById(R.id.addorder);





    HashMap<String, String> song = new HashMap<String, String>();

    song = data.get(position);

    // Setting all values in listview
    title.setText(song.get(CustomizedListView.KEY_TITLE));
    artist.setText(song.get(CustomizedListView.KEY_DESC));
    duration.setText(song.get(CustomizedListView.KEY_COST));
    regular.setText(song.get(CustomizedListView.KEY_REGULAR));
    small.setText(song.get(CustomizedListView.KEY_SMALL));
    large.setText(song.get(CustomizedListView.KEY_LARGE));

    imageLoader.DisplayImage(song.get(CustomizedListView.KEY_THUMB_URL), thumb_image);

    btn_add.setOnClickListener(new OnClickListener()
    {
        public void onClick(View v)
        {
           Intent intent = new Intent(Context, FinalOrder.class);
           startActivity(intent);
        }
    });

    return vi;

   }

protected void startActivity(Intent intent) {
    // TODO Auto-generated method stub

}

  }
4

2 回答 2

1

在链接中提到的自定义适配器中,在getView方法中将单击列表器添加到图像按钮因此您可以处理自定义适配器中图像按钮的单击,如果您想在活动之间发送数据,您也可以在该单击列表器中发送它基于点击位置

myImageButton.setOnClickListener(new OnClickListener()
            {
                public void onClick(View v)
                {
Intent intent = new Intent(Context, nextactivity.class);
intent.putExtra("value",ValueArray[position]);
startActivity(intent);
})};

检查一下,如果这对你有帮助,请告诉我

将您的代码与下面发布的代码进行比较

/*
 * Copyright (C) 2010 Eric Harlow
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.ericharlow.DragNDrop;

import java.util.ArrayList;

import android.content.Context;
import android.content.Intent;
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;
import android.widget.Toast;

public final class DragNDropAdapter extends BaseAdapter implements RemoveListener, DropListener{

    //private int[] mIds;
    //private int[] mLayouts;
    private LayoutInflater mInflater;
    private ArrayList<String> mContent;
    private Context mContext;

    public DragNDropAdapter(Context context, ArrayList<String> content) {
        mContext = context;
        init(context,new int[]{android.R.layout.simple_list_item_1},new int[]{android.R.id.text1}, content);
    }

    /*public DragNDropAdapter(Context context, int[] itemLayouts, int[] itemIDs, ArrayList<String> content) {
        init(context,itemLayouts,itemIDs, content);
    }*/

    private void init(Context context, int[] layouts, int[] ids, ArrayList<String> content) {
        // Cache the LayoutInflate to avoid asking for a new one each time.
        mInflater = LayoutInflater.from(context);
        //mIds = ids;
        //mLayouts = layouts;
        mContent = content;
    }

    /**
     * The number of items in the list
     * @see android.widget.ListAdapter#getCount()
     */
    public int getCount() {
        return mContent.size();
    }

    /**
     * Since the data comes from an array, just returning the index is
     * sufficient to get at the data. If we were using a more complex data
     * structure, we would return whatever object represents one row in the
     * list.
     *
     * @see android.widget.ListAdapter#getItem(int)
     */
    public String getItem(int position) {
        return mContent.get(position);
    }

    /**
     * Use the array index as a unique id.
     * @see android.widget.ListAdapter#getItemId(int)
     */
    public long getItemId(int position) {
        return position;
    }

    /**
     * Make a view to hold each row.
     *
     * @see android.widget.ListAdapter#getView(int, android.view.View,
     *      android.view.ViewGroup)
     */
    public View getView(final int position, View convertView, ViewGroup parent) {
        // A ViewHolder keeps references to children views to avoid unneccessary calls
        // to findViewById() on each row.
        ViewHolder holder;

        // When convertView is not null, we can reuse it directly, there is no need
        // to reinflate it. We only inflate a new View when the convertView supplied
        // by ListView is null.
        if (convertView == null) {
            mInflater = LayoutInflater.from(mContext);
            convertView = mInflater.inflate(R.layout.dragitem, null);
            // Creates a ViewHolder and store references to the two children views
            // we want to bind data to.
            holder = new ViewHolder();
            holder.text = (TextView) convertView.findViewById(R.id.TextView01);
            holder.image=(ImageView)convertView.findViewById(R.id.ImageView01);
            convertView.setTag(holder);
        } else {
            // Get the ViewHolder back to get fast access to the TextView
            // and the ImageView.
            holder = (ViewHolder) convertView.getTag();
        }
        holder.image.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {

                Toast.makeText(mContext,"ImageClickClick "+position, Toast.LENGTH_LONG).show();
                Intent noteIntent = new Intent(mContext,AnotherActivity.class);
                noteIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                mContext.startActivity(noteIntent);
            }
        });
        // Bind the data efficiently with the holder.
        holder.text.setText(mContent.get(position));

        return convertView;
    }

    static class ViewHolder {
        TextView text;
        ImageView image;
    }

    public void onRemove(int which) {
        if (which < 0 || which > mContent.size()) return;       
        mContent.remove(which);
    }

    public void onDrop(int from, int to) {
        String temp = mContent.get(from);
        mContent.remove(from);
        mContent.add(to,temp);
    }


}
于 2012-10-15T08:35:28.897 回答
1

您的适配器正在向您返回视图。正确的?

现在在你的 onitemclickListener

ImageButton myImageButton = (ImageButton) view.findViewById(R.id.addorder);

现在在您的 myImageButton 上应用 onclicklistener。

于 2012-10-15T08:29:18.723 回答