我在ListView上面有一个CheckBox,里面有Checkbox项目.因此,当我检查复选框时,我申请notifyDataSetChanged()
检查所有检查列表中的所有项目.所以当时我得到了两次getView方法的日志,这意味着当我notifyDataSetChanged()
只调用一次时,getView会被调用两次.那么,谁能告诉我为什么我要两次获取日志?为什么getView()被调用两次?
主类 -
checkAll = (CheckBox) findViewById(R.id.my_check_box);
checkAll.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton checkbox, boolean arg1) {
adapter.notifyDataSetChanged();
}
});
Run Code Online (Sandbox Code Playgroud)
适配器类代码 -
public class myAdapter extends ArrayAdapter<Model> {
private final List<Model> list;
private final Activity context;
private CheckBox checkAll;
public myAdapter(Activity context, List<Model> list, CheckBox checkAll) {
super(context, R.layout.row, list);
this.context = context;
this.list = list;
this.checkAll = checkAll;
}
static class ViewHolder {
protected TextView text;
protected CheckBox checkbox;
}
@Override
public View getView(final …
Run Code Online (Sandbox Code Playgroud) android android-widget android-manifest android-emulator android-layout
我正在开发游戏,我想设置游戏的布局,使其适用于多个设备屏幕.因此,我没有从中获取图像,而是asset's folder
寻找某种方法从中获取图像drawable folder
.所以,稍后我可以根据设备的屏幕获取图像.
更新:
我试过用它
mFaceTextureRegionLifeLine = (TiledTextureRegion) TextureRegionFactory.createFromResource(mTextureLifeLine, this, R.drawable.icon, 100, 100);
Run Code Online (Sandbox Code Playgroud)
而且,它解雇了我并且错误如下 -
09-05 19:02:38.923: ERROR/AndroidRuntime(4161): FATAL EXCEPTION: main
09-05 19:02:38.923: ERROR/AndroidRuntime(4161): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.engine/com.engine.BallDemo}: java.lang.ClassCastException: org.anddev.andengine.opengl.texture.region.TextureRegion
09-05 19:02:38.923: ERROR/AndroidRuntime(4161): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
09-05 19:02:38.923: ERROR/AndroidRuntime(4161): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
09-05 19:02:38.923: ERROR/AndroidRuntime(4161): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
09-05 19:02:38.923: ERROR/AndroidRuntime(4161): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
09-05 19:02:38.923: ERROR/AndroidRuntime(4161): at android.os.Handler.dispatchMessage(Handler.java:99)
09-05 19:02:38.923: ERROR/AndroidRuntime(4161): at android.os.Looper.loop(Looper.java:123)
09-05 19:02:38.923: ERROR/AndroidRuntime(4161): at android.app.ActivityThread.main(ActivityThread.java:4627)
09-05 19:02:38.923: ERROR/AndroidRuntime(4161): at java.lang.reflect.Method.invokeNative(Native Method)
09-05 19:02:38.923: ERROR/AndroidRuntime(4161): …
Run Code Online (Sandbox Code Playgroud) 我正在开发一款游戏AndEngine
.在那里我能够移动一个对象Right to Left
,Top to Bottom
反之亦然.但是,我的问题是如何在中移动Sprite对象Direction of Fling
?这意味着如果用户在任何方向上甩掉Sprite对象应该在fling的坐标上移动并且应该继续前进.
如果有人可以提出建议,如何得到确切的X and Y co-ordinates
也会这样做,我可以设法自己在坐标上移动Sprite对象.
您还可以看到VIDEO - Pirates Subs
在视频中,来自任何方向Launcher
的FLING
是我正在寻找的东西.
提前致谢.苏瑞萨哈尼.
我有一个弹出对话框,我在其中加载webview.我想在webview加载到弹出窗口的顶部时显示progressBar.我已经找到了一种在网页加载时显示加载进度条的方法,但如果在弹出的对话框中加载了这个webview,则不会在其上显示progressBar.有人可以解释为什么会发生这种情况.
这是代码
[码]
@SuppressWarnings("static-access")
public void showPopUp(String url){
try{
Dialog dialog = new Dialog(Links.this);
LayoutInflater inflater = (LayoutInflater)getSystemService(Links.this.LAYOUT_INFLATER_SERVICE);
View vi = inflater.inflate(R.layout.link_popup, null);
dialog.setContentView(vi);
dialog.setTitle("Title here");
dialog.setCancelable(true);
WebView wb = (WebView) vi.findViewById(R.id.WebView01);
wb.setWebViewClient(new MyWebViewClient());
wb.getSettings().setJavaScriptEnabled(true);
wb.getSettings().setSupportZoom(true);
wb.loadUrl(url);
// final Activity MyActivity = this;
//
// progressDialog = ProgressDialog.show(dialog.getOwnerActivity(), "", "Loading....", true);
//
// wb.setWebChromeClient(new WebChromeClient() {
// public void onProgressChanged(WebView view, int progress)
// {
// MyActivity.setProgress(progress * 100); //Make the bar disappear after URL is loaded
// if(progress == …
Run Code Online (Sandbox Code Playgroud) 我想以某种regular
间隔向服务器发送数据.所以,我也在使用AlarmManager
它.它工作正常,但问题是,当我改变cancel
报警Date/Time
.在得到再次取消之前那段时间的火警,这样就使得我的应用程序变得更坏,在extra
数据发送到server
与irregular
间隔.
这是我的BroadCastReceiver
班级AlarmManager
.
public class MyReceiver extends BroadcastReceiver{
AlarmManager mgr;
PendingIntent pi;
Intent intent;
public static boolean flag = false;
@Override
public void onReceive(final Context arg0, Intent arg1) {
if(arg1.getAction().equals("android.intent.action.TIME_SET")){
Log.d("MyReceiver", "Time set");
mgr = (AlarmManager) arg0.getSystemService(Context.ALARM_SERVICE);
intent = new Intent(arg0, TestService.class);
intent.putExtra("test", "testvalue");
pi = PendingIntent.getService(arg0, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
if(!flag){
mgr.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 10000, 5000, pi);
flag = true;
}
else{
mgr.cancel(pi); …
Run Code Online (Sandbox Code Playgroud) 在我的应用程序中,我有一个树形结构表,我想知道如果我可以通过简单地应用单个查询从sqlite数据库中获取树结构数据.目前我正在使用for循环手动删除它并且能够满足我的要求但是我不满意这种方法,因为它更复杂,可能是耗时的等等.
我的表格结构如下,
parent_id | cat_id
null | 1
1 | 2
1 | 3
1 | 4
4 | 5
4 | 6
Run Code Online (Sandbox Code Playgroud)
所以,现在以上就是我的表结构,我想取树状结构,如果我通过PARENT_ID为1
我的查询中,那么它应该返回2,3,4,5,6
的1
是父母1, 2, 3, 4
和4
为父母5,6
,也4
为儿童1
所以,我想要的输入和输出,
input output
1 2,3,4,5,6
4 5, 6
Run Code Online (Sandbox Code Playgroud)
那么,有一个简单的方法来通过使用sqlite查询来实现上面的树结构?
要么
没有办法使用sqlite查询来实现这一点,我需要通过手动循环所有类别ID来遵循当前使用它的方法或方法.
我在AutoCompleteTextView上使用ArrayAdapter.results.values具有预期值但我在UI上没有列表.
public class CustomArrayAdapter extends ArrayAdapter<String> implements Filterable {
private final Object mLock = new Object();
private CustomFilter mFilter;
public ArrayList<String> mItems;
public ArrayList<String> mFiltered;
public CustomArrayAdapter(Context context, int textViewResourceId) {
super(context, textViewResourceId);
mItems = new ArrayList<String>();
mFiltered = new ArrayList<String>();
}
public Filter getFilter() {
if (mFilter == null) {
mFilter = new CustomFilter();
}
return mFilter;
}
@Override
public void add(String s) {
mItems.add(s);
}
private class CustomFilter extends Filter {
@Override
protected FilterResults performFiltering(CharSequence constraint) {
FilterResults …
Run Code Online (Sandbox Code Playgroud) 我试图在Touch of Image上获得x,y坐标,并且我想要执行一些操作.所以,任何人都可以告诉我如何触摸图像的x,y坐标.提前致谢.
我的代码 -
public class MovableObject extends ImageView implements OnTouchListener{
Bitmap myBmp;
Paint myPaint = new Paint();
int MoveX = 0;
public MovableObject(Context context,int moveObject,Bitmap myBmp) {
super(context);
super.setClickable(true);
this.myBmp = myBmp;
myPaint.setColor(Color.WHITE);
this.MoveX = moveObject;
setOnTouchListener(this);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawBitmap(myBmp, MoveX, 100, myPaint);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
System.out.println("down...."+event.getX()+" "+event.getY());
case MotionEvent.ACTION_MOVE:
}
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
通过这个我得到x,y坐标,我点击,但我想得到x,y当我点击我的图像.
我正在尝试List
使用该Parcelable
接口创建一个包含对象的对象.我无法读Parcel
回来的对象.
谁能指出我正确的方向?我在这里错过了什么?
MyParcelable
宾语:
public class MyParcelable implements Parcelable {
private int myInt = 0;
private List<MyListClass> arrList;
public List<MyListClass> getArrList() {
return arrList;
}
public void setArrList(List<MyListClass> arrList) {
this.arrList = arrList;
}
public int getMyInt() {
return myInt;
}
public void setMyInt(int myInt) {
this.myInt = myInt;
}
MyParcelable() {
// initialization
arrList = new ArrayList<MyListClass>();
}
public MyParcelable(Parcel in) {
myInt = in.readInt();
in.readTypedList(arrList, MyListClass.CREATOR);
}
@Override
public int describeContents() { …
Run Code Online (Sandbox Code Playgroud) 我正在使用ontouch事件,但我遇到的问题是它调用down事件但它是nt调用move事件或UP事件检查以下代码
public class DragNewActivity extends Activity implements OnTouchListener {
private float X;
private float Y;
private int width;
private int height;
private CharSequence s;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.d("D","D");
TextView tv1 = (TextView)findViewById(R.id.tv1);
TextView tv2 = (TextView)findViewById(R.id.tv2);
tv1.setOnTouchListener(this);
//tv2.setOnTouchListener(this);
}
@Override
public boolean onTouch(View v, MotionEvent event) {
//int action = event.getAction();
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
Log.d("DOWN","DOWN");
break;
case MotionEvent.ACTION_MOVE:
Log.d("MOVE","MOVE");
break;
case MotionEvent.ACTION_UP:
Log.d("UP","UP");
X = …
Run Code Online (Sandbox Code Playgroud)