我已经创建了一个GridView
,并在“项目单击”上显示了AlertDialog
,然后尝试获取单击的项目在AlertDialog
按钮中的位置。但是收到警告,需要声明从内部类访问的变量为final。
这里是代码
public class DesignSelection extends AppCompatActivity {
GridView gridView;
int [] designs1 = {R.drawable.es,R.drawable.hole,R.drawable.ipx,R.drawable.op6,R.drawable.op7,R.drawable.pix,R.drawable.punch,R.drawable.spun};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_design_selection);
gridView = findViewById(R.id.gridView);
CustomAdapter customAdapter = new CustomAdapter(getApplicationContext(), designs1);
gridView.setAdapter(customAdapter);
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
AlertDialog.Builder ab = new AlertDialog.Builder(DesignSelection.this);
ab.setTitle("Alert!");
ab.setMessage("You may see an "+holder+"Add\n Buy Pro for not seeing these annoying Adds");
ab.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(DesignSelection.this, "Now Clicked: " + position, Toast.LENGTH_LONG).show(); //getting error at position
}
});
ab.show();
}
});
}
}
尝试一下
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {
AlertDialog.Builder ab = new AlertDialog.Builder(DesignSelection.this);
ab.setTitle("Alert!");
ab.setMessage("You may see an "+holder+"Add\n Buy Pro for not seeing these annoying Adds");
ab.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(DesignSelection.this, "Now Clicked: " + position, Toast.LENGTH_LONG).show(); //getting error at position
}
});
ab.show();
}
});