相关疑难解决方法(0)

Android保存列表<String>

无论如何我可以将List变量保存到Androids手机的内部或外部存储器中吗?我知道我可以保存原始数据,但不确定这个.

提前致谢.

android list save

11
推荐指数
1
解决办法
6万
查看次数

如何使用可拖动项目制作ListView?

我正在寻找一个ListPreference,用户可以在其中更改列表中的项目顺序.这些物品可以拖动,并且可以由用户重新订购.

我在我的自定义ROM中看到了这个(我几乎可以肯定我在Cyanogenmod中看到它)用于QuickPanel.这是一个截图,通过以下方式获得创意:

Sabotage ROM的QuickPanel设置中的

我知道如何制作自定义ListView项目并设置图标以指示项目是可拖动的,但我不知道如何使它们可拖动,并相应地更改顺序.至于在偏好中保存它们,我发现可以很容易地实现.

PS:我知道Cyanogenmod是开源的,但我找不到这个特殊事物的来源:(我能得到的最接近的是这个,它应该在另一个屏幕附近...

在此先感谢任何关于此的提示.

更新:我最终使用了接受的答案中的文件,添加和修改.我在这里列出它们以供进一步参考.

  • 使用自定义适配器(在我的情况下为ArrayAdapter)来实现此项可拖动的视觉反馈,这是TextView附近的ImageView.这是可选的.

  • 设置DragListener和RemoveListener以相应地更新列表.ListView不会自动执行此操作.这取决于您使用的适配器.

  • 有一行将View转换为ViewGroup,它产生了一些错误,所以我删除了没有任何问题的转换,不需要它.(在onInterceptTouchEvent方法中).

  • 改变mRemoveMode = 1;TouchInterceptor的构造函数,或者:FLING = 0; SLIDE = 1; TRASH = 2;.我认为TRASH,资源也应该可用.

我实际上不是从答案的链接中获取文件,而是从我已经拥有的Cyanogenmod中获取文件,但我猜这些文件是相同的.

这些是项目中的实际文件(在撰写本文时的r12):

我希望它可以帮助别人:)

android listview

5
推荐指数
1
解决办法
5983
查看次数

无法控制共享首选项中的字符串集的顺序

这是我的第一个stackoverflow问题.我在这上面做了很多谷歌搜索.在Hashsets,Treesets,LinkedHashSets,Collections,Stacks(Stack类被弃用?)......我意识到我可以使用SQLite,但我暂时试图避免这种情况.

我正在使用Android Studio中的应用程序.该应用与人打交道,列出并以不同方式与他们联系.应用用户可以维护和控制三种类型的列表:最近联系,阻止和收藏.这些列表在共享首选项中保存为字符串集,因此它们可以在应用程序关闭和重新打开后继续存在.当使用在线数据库填充列表时,各个字符串充当主键.我最关心的是"最近联系的"列表,因为这个列表的顺序很重要.

问题是,据我所知,当我声明一个字符串集时,它如下:

Set<String> faveArray = new LinkedHashSet<String>;
Run Code Online (Sandbox Code Playgroud)

据我所知,我只能在右侧使用HashSet,LinkedHashSet或TreeSet.

因为我使用了LinkedHashset,所以当我重新打开应用程序并从共享偏好中拉出数据时,我会期望从最近添加的(LIFO /堆栈)开始拉出字符串,因此当我填充listview时,他们将与列表顶部的"最近联系"人员展示等等......或者至少我期待有某种可预测的顺序/行为,我可以使用.

所以.......我已经为我的共享首选项I/O类附加了我的代码.

从我的主应用程序,我做了类似的事情:

static SharedPrefUTIL sharedPrefUTIL;

sharedPrefUTIL = new SharedPrefUTIL(this);

sharedPrefUTIL.addRecent("derp");
sharedPrefUTIL.addRecent("nerp");
sharedPrefUTIL.addRecent("gerp");
sharedPrefUTIL.addRecent("herp");
Run Code Online (Sandbox Code Playgroud)

此时,代码

Log.i(TAG, set + " committed to " + key);
Run Code Online (Sandbox Code Playgroud)

在类SharedPrefUTIL日志的commit()方法中:

"[derp,nerp,gerp,herp]致力于最近的阵营"

关闭并重新打开应用程序后,如果我们执行:

sharedPrefUTIL.toastContents("R");
Run Code Online (Sandbox Code Playgroud)

结果似乎是随机顺序.<<<<这是我的问题.

任何帮助非常感谢.

package com.secretsoft.booberbunz;

import android.content.Context;
import android.content.SharedPreferences;
import android.util.Log;
import android.widget.Toast;

import java.util.Arrays;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Queue;
import java.util.Set;
import java.util.TreeSet;

/**
* Created by Programming on 2/22/2016.
*/
public class SharedPrefUTIL {

protected static final String TAG …
Run Code Online (Sandbox Code Playgroud)

java android shared preferences lifo

5
推荐指数
1
解决办法
2469
查看次数

如何在Android中的共享首选项中添加布尔数组

我想在共享首选项中存储一个布尔数组,我想稍后访问数组元素.有人可以帮帮我吗?谢谢你.

android android-activity

2
推荐指数
1
解决办法
2737
查看次数

如何在共享首选项中设置数组?

可能的重复:
是否可以将数组或对象添加到 Android 上的 SharedPreferences

我使用共享首选项在我的闹钟中创建了多个闹钟,现在我希望闹钟应该在一周中的特定一天响起,为此我想要一个可以保存闹钟响铃日期的数组。谁能告诉如何将数组放入共享首选项以及如何再次检索它..?

SharedPreferences set=getSharedPreferences(MYPR, 0);
            SharedPreferences.Editor ed=set.edit();
            ed.putInt("Ahh", Ahh);
            ed.putInt("Amm",Amm);
            ed.putBoolean("en", true);
            ed.commit();
Run Code Online (Sandbox Code Playgroud)

现在我将闹钟时间及其属性放在共享首选项中。要添加什么来放置数组(星期几)也..?

android sharedpreferences

1
推荐指数
1
解决办法
1374
查看次数

如何从BroadcastReceiver设置Alertbox

我在Android应用程序中实现了警报.报警工作正常.Toast消息是可见的. 现在我想向用户发出警报框通知.

这是来自ReceiverActivityClass的代码.我试过了

public class ReceiverActivity extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub

// Code....


    new AlertDialog.Builder(context)
    .setTitle("Alert Box")
    .setMessage("Msg for User")
    .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface arg0, int arg1) {
        // TODO Auto-generated method stub
            // some coding...
        }
    })
    .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface arg0, int arg1) {
            arg0.dismiss();
    }
}).create().show();
}
Run Code Online (Sandbox Code Playgroud)

}

android broadcastreceiver android-alarms android-alertdialog

0
推荐指数
1
解决办法
9636
查看次数