0
我有一个壁纸应用程序,其中包含一个列表视图,有图像,你选择一个图像,然后将其设置为壁纸,但我不知道如何分辨哪个项目是由用户选择然后我有一个广播接收器,所以设备上电后墙纸不会改变,但我也不知道如何告诉它哪个项目被选中。如何从列表视图中获取项目的位置?
这里是我的MainActivty:
public class Set1_Activity extends Activity {
ImageView display;
ListView list;
Integer[] images = {
R.drawable.iv1_s, R.drawable.iv2_s, R.drawable.iv3_s, R.drawable.iv4_s,
.......
};
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_main2);
display = (ImageView) findViewById(R.id.IView);
list = (ListView) findViewById(R.id.setOneListView);
HeartlessAdapter adapter = new HeartlessAdapter(this, images);
list.setAdapter(adapter);
Button setWp = (Button) findViewById(R.id.setWp);
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
switch(position){
case 0:
display.setImageResource(R.drawable.iv1);
break;
case 1:
display.setImageResource(R.drawable.iv2);
break;
case 2:
display.setImageResource(R.drawable.iv3);
break;
........
setWp.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Toast WpSet = Toast.makeText(Set1_Activity.this,"Wallpaper Set", Toast.LENGTH_SHORT);
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels;
int width = metrics.widthPixels;
Bitmap tempbitMap = BitmapFactory.decodeResource(getResources(), //what should I write here);
Bitmap bitmap = Bitmap.createScaledBitmap(tempbitMap,width,height, true);
WallpaperManager wallpaperManager = WallpaperManager.getInstance(Set1_Activity.this);
wallpaperManager.setWallpaperOffsetSteps(1, 1);
wallpaperManager.suggestDesiredDimensions(width, height);
try {
wallpaperManager.setBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
WpSet.show();
}
});
,这里是我的广播接收器:
public class BootReceiver extends BroadcastReceiver {
private static final String TAG="BootReceiver";
@Override public void onReceive(Context context,Intent intent){
try{
DisplayMetrics metrics = new DisplayMetrics();
WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
windowManager.getDefaultDisplay().getMetrics(metrics);
int height = metrics.heightPixels;
int width = metrics.widthPixels;
Bitmap tempbitMap = BitmapFactory.decodeResource(context.getResources(), //what should i type here);
WallpaperManager wallpaperManager = WallpaperManager.getInstance(context);
wallpaperManager.setWallpaperOffsetSteps(1, 1);
wallpaperManager.suggestDesiredDimensions(width, height);
try {
wallpaperManager.setBitmap(tempbitMap);
} catch (IOException e) {
e.printStackTrace();
}
}catch(Exception e){
Log.e(TAG,e.toString());
}
}
}
它给了很多错误,在bootreceiver类,因为我收到这些错误的第一行 - 语法错误令牌“ )“,;预计 \t - 令牌“(”语法错误;预计 \t - 为参数getWPSelected非法修改;只有最后是 \t允许 – 2014-12-04 00:27:14
和第二空隙方法不能返回值 – 2014-12-04 00:27:37
创建一个名为例如偏好设置类,并添加此方法;你可以调用方法Prefs.setWPSelecter(,)和Prefs.getWPSelecter(,) – Jorgesys 2014-12-04 00:30:24