2015-10-05 49 views
0

如何获取ImageView超出OnItemClickListener范围?如何获取ImageView超出Onitemclicklistener范围

mListView2.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view,int position, long id) { 
      imageView2 = (ImageView) view.findViewById(R.id.applist_item_image); 
      if (switches==true) { 
       imageView2.setImageResource(R.drawable.on); 
       preferences.edit().putBoolean("tgpref", true).commit(); 
       switches = false; 
      } else { 
       imageView2.setImageResource(R.drawable.off); 
       preferences.edit().putBoolean("tgpref", false).commit(); 
       switches = true; 
      } 
     } 
    }); 
+0

编写代码'imageView2 =(ImageView的)view.findViewById(R.id.applist_item_image);'上面的这个'OnItemClickListener()'或'中的OnCreate()' –

+0

其不工作,因为ImageView的是不从R.layout.activity_main 它从另一个xml文件这是R.layout.activity_row 所以我如何得到图像视图来解决我的问题? –

回答

1

尝试在`的onCreate ...使用inflater你必须使用addView()将ImageView添加到当前布局。

LayoutInflater inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

View vi = inflater.inflate(R.layout.activity_row, null); //activity_row.xml is your file. 
imageView2 = (ImageView) view.findViewById(R.id.applist_item_image); 
1

ImageView imageView2 = (ImageView) view.findViewById(R.id.applist_item_image); 

外前onItemClickListener的范围。

换句话说,把它放在孔类活动的范围

setContentView(R.layout.activity_main); 

ImageView imageView2 = (ImageView) findViewById(R.id.applist_item_image); 

String[] itemname = { "Wi-Fi", "Bluetooth", "Mobile Data", }; 
Integer[] imgid = { R.drawable.ic_launcher, R.drawable.ic_launcher, R.drawable.ic_launcher, }; 
ImageView mListView2 = (ListView) findViewById(R.id.lvAppList1); 
preferences=PreferenceManager.getDefaultSharedPreferences(this); 
finalRowActivityadapter=newRowActivity(this,itemname,imgid); 
mListView2.setAdapter(adapter); 
mListView2.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    //here you can now access imageView2 
} 
+0

创建完成后,发生java null异常 –

+0

可否请您复制您的所有类? – PereCullera

+0

setContentView(R.layout.activity_main); \t \t \t \t字符串[] ITEMNAME = { “无线网络”, “蓝牙”, “移动数据”, \t \t}; 整数[] imgid = {R.drawable.ic_launcher,R.drawable.ic_launcher, \t \t \t \t R.drawable.ic_launcher, }; mListView2 =(ListView中)findViewById(R.id.lvAppList1); \t \t preferences = PreferenceManager.getDefaultSharedPreferences(this); \t finalRowActivityadapter = newRowActivity(this,itemname,imgid); \t \t mListView2.setAdapter(adapter); \t \t mListView2.setOnItemClickListener(新AdapterView.OnItemClickListener(){ \t \t \t ImageView的imageView2 =(ImageView的)findViewById(R.id.applist_item_image); –

0

你可以声明imageview的全球性,如: - ImageView的ImageView的

+0

我做到了,但Java空异常导致通过id查找是在onitemclicklistener我想使用imageview以外的onitemclicklistener作用域.. ?? 怎么样? –

+0

如果你这样做,你可以很容易地在imageview外使用 –

+0

我通过声明全局但是发生null异常来做到这一点。我现在应该做什么? –