Java 是否将当前项目位置传递给内部类?
如何将当前Hashmap键位置传递给内部类 我需要传递数据。获取(位置)到我的内部类单击。通常我会宣布它是最终的,但我不知道在这种情况下是如何做到的Java 是否将当前项目位置传递给内部类?,java,android,hashmap,inner-classes,Java,Android,Hashmap,Inner Classes,如何将当前Hashmap键位置传递给内部类 我需要传递数据。获取(位置)到我的内部类单击。通常我会宣布它是最终的,但我不知道在这种情况下是如何做到的 public class UpcomingGridViewAdapter extends BaseAdapter { public boolean pressedMovieItem; Context context; ArrayList<HashMap<String, String>> d
public class UpcomingGridViewAdapter extends BaseAdapter {
public boolean pressedMovieItem;
Context context;
ArrayList<HashMap<String, String>> data;
HashMap<String, String> mylist = new HashMap<>();
public UpcomingGridViewAdapter(Context a, ArrayList<HashMap<String, String>> d) {
context = a;
data = d;
}
public int getCount() {
return data.size();
}
public HashMap<String, String> getItem(int position) {
return data.get(position);
}
public long getItemId(int position) {
return position;
}
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.upcoming_grid_item, parent, false);
}
final ImageView poster = (ImageView) convertView.findViewById(R.id.upcoming_image);
mylist = data.get(position);
final String posterPath = mylist.get("poster_path");
// set image url correctly
// sizes for image 45, 92, 154, 185, 300, 500
final String url = "http://image.tmdb.org/t/p/w185" + posterPath;
// load image url into poster
Picasso.with(context).load(url).into(poster);
// load image url into poster
// Get onclick of item and pass data to singleitemview for upcoming
convertView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// need to pass data.get(position) to the inner class click
new Click().execute();
}
});
return convertView;
}
// Downloading data asynchronously
class Click extends AsyncTask< Void, Void, Void> {
@Override
protected void onPreExecute() {
// TODO setup progressdialog
}
@Override
protected Void doInBackground(Void... params) {
mylist = data.get(position); // need to get position
Intent intent = new Intent(context, UpcomingSingleItem.class);
intent.putExtra("poster_path", mylist.get(Upcoming.TAG_POSTER));
intent.putExtra("title", mylist.get(Upcoming.TAG_TITLE));
intent.putExtra("release_date", mylist.get(Upcoming.TAG_RELEASE));
intent.putExtra("overview", mylist.get(Upcoming.TAG_OVERVIEW));
intent.putExtra("id", mylist.get(Upcoming.TAG_ID));
intent.putExtra("vote_average", mylist.get(Upcoming.TAG_VOTE_AVG));
context.startActivity(intent);
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
// TODO stop progressdialog
}
}
}
公共类UpcomingGridViewAdapter扩展了BaseAdapter{
公共布尔值pressedMovieItem;
语境;
阵列列表数据;
HashMap mylist=新建HashMap();
公共UpcomingGridViewAdapter(上下文a,ArrayList d){
上下文=a;
数据=d;
}
public int getCount(){
返回data.size();
}
公共HashMap getItem(int位置){
返回数据。获取(位置);
}
公共长getItemId(int位置){
返回位置;
}
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
if(convertView==null){
LayoutFlater充气器=(LayoutFlater)context.getSystemService(context.LAYOUT\u充气器\u服务);
convertView=充气机。充气(R.layout.Uncoming\u grid\u项,父项,false);
}
最终的ImageView海报=(ImageView)convertView.findViewById(R.id.u图像);
mylist=data.get(位置);
最终字符串posterPath=mylist.get(“poster_path”);
//正确设置图像url
//图像尺寸45、92、154、185、300、500
最终字符串url=”http://image.tmdb.org/t/p/w185“+后路径;
//将图像url加载到海报中
毕加索.with(context).load(url).into(海报);
//将图像url加载到海报中
//获取项的onclick并将数据传递给singleitemview,以备将来使用
convertView.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图arg0){
//需要传递数据。获取(位置)到内部类单击
新建Click().execute();
}
});
返回视图;
}
//异步下载数据
类单击扩展异步任务{
@凌驾
受保护的void onPreExecute(){
//TODO设置进度对话框
}
@凌驾
受保护的Void doInBackground(Void…参数){
mylist=data.get(position);//需要获取位置
意向意向=新意向(上下文,UpcomingSingleItem.class);
intent.putExtra(“poster_path”,mylist.get(comming.TAG_poster));
intent.putExtra(“title”,mylist.get(comming.TAG_title));
intent.putExtra(“发布日期”,mylist.get(即将发布的.TAG_发布));
intent.putExtra(“概述”,mylist.get(即将推出的.TAG_概述));
intent.putExtra(“id”,mylist.get(comming.TAG_id));
intent.putExtra(“投票平均”,mylist.get(即将到来的.TAG\u投票平均值));
背景。开始触觉(意图);
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
super.onPostExecute(结果);
//TODO停止进程对话框
}
}
}
如果我没弄错,您只需要使用params执行异步任务。请参阅文档:
如果我没弄错,您只需要使用params执行异步任务。请参阅文档:
我认为您需要单击asynctask中的职位,以便在asynctask调用中传递您的职位:
new Click().execute(position);
然后使用如下参数接收:
mylist = data.get(params[0]); // get position here which is passed
我认为您需要单击asynctask中的职位,以便在asynctask调用中传递您的职位:
new Click().execute(position);
然后使用如下参数接收:
mylist = data.get(params[0]); // get position here which is passed
你试过为内部类使用构造函数吗?你试过为内部类使用构造函数吗?这非常有效。对不起,问题公式不准确。这是完美的。对不起,问题表述不准确