如果我有的话,简单但有点棘手
list.setAdapter(new ArrayAdapter<String>(this,R.layout.double_row, R.id.doubleRow, articleItemsHelper));
Run Code Online (Sandbox Code Playgroud)
如果articleItemsHelper是String,它可以工作,但我想在那里有HTML格式,所以当articleItemsHelper类型为Spanned时,这个(适配器)不起作用.
ArrayList<Spanned> articleItemsHelper = new ArrayList<Spanned>();
Run Code Online (Sandbox Code Playgroud)
解决方案是什么?
编辑:这是解决方案 - 自定义适配器
private static class SpannedAdapter extends BaseAdapter {
private LayoutInflater mInflater;
private ArrayList<Spanned> mArticleList;
public SpannedAdapter(Context context, ArrayList<Spanned> articleList) {
mInflater = LayoutInflater.from(context);
mArticleList = articleList;
}
public int getCount() {
return mArticleList.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) …Run Code Online (Sandbox Code Playgroud) 我有5个数组,其中包含一些插入的元素(数字):
1,4,8,10
1,2,3,4,11,15
2,4,20,21
2,30
我需要在这些数组中找到最常见的元素,并且每个元素都应该一直持续到最后(参见下面的示例).在这个例子中,它是粗体组合(或者是相同的一个,但最后是"30",它是"相同的")因为它包含最少数量的不同元素(只有两个,4和2/30).
这种组合(见下文)并不好,因为如果我有前任."4"它必须"去"直到它结束(下一个数组必须完全不包含"4").所以组合必须一直持续到最后.
1,4,8,10
1,2,3,4,11,15
2,4,20,21
2,30
EDIT2:OR
1,4,8,10
1,2,3,4,11,15
2,4,20,21
2,30
或其他任何东西都不好.
是否有一些算法可以加速这个问题(如果我有数千个阵列,每个阵列有数百个元素)?
要说清楚 - 解决方案必须包含最少数量的不同元素,并且必须将组(相同数字)组从第一个 - 较大的组分组到最后一个 - 最小的元素.因此在上面的例子中,4,4,4,2比4,2,2,2更好,因为在第一个例子中,4的组大于2的组.
编辑:更具体.解决方案必须包含最少数量的不同元素,并且这些元素必须从头到尾分组.所以,如果我有三个arrray像
1,2,3
1,4,5
4,5,6
解决方案是1,1,4或1,1,5或1,1,6不是2,5,5,因为1有更大的组(其中两个)而不是2(只有一个).
谢谢.
编辑3:我不能更具体:(
EDIT4:@spintheblack 1,1,1,2,4是正确的解决方案,因为第一次使用的数字(假设在位置1)以后不能使用(除了它在1的SAME组中).我会说分组有"优先级"吗?另外,我没有提到它(对不起),但是数组中的数字没有以任何方式排序,我在这篇文章中输入它是因为我更容易遵循.
我有这段代码(RelativeLayout只是我主要布局中的一行,并不重要).
RelativeLayout cellphoneNumberLayout = (RelativeLayout) findViewById(R.id.cellphone_number);
cellphoneNumberLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
SettingsDialog myDialog = new SettingsDialog(Main.this);
myDialog.show();
}
});
Run Code Online (Sandbox Code Playgroud)
在我的自定义对话框(SettingsDialog)中,我有EditText和一个Button.当显示对话框时,如何强制键盘立即打开并关注我的(单个)EditText字段?
我尝试使用经典的"强制",我在这里找到了SO,但这不是活动,而是一个对话框.
编辑:我试过这个,但它不起作用.将myDialog声明为类变量并添加到myDialog.show()下面;
myDialog.myEditTextField.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
myDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
}
}
});
Run Code Online (Sandbox Code Playgroud)
什么都没发生.
如果我正在打电话的话,我正从相机拍照
File file = new File(getFilesDir().getAbsolutePath() + "/myImage.jpg");
Uri outputFileUri = Uri.fromFile(file);
cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
Run Code Online (Sandbox Code Playgroud)
OK button 在相机应用程序不起作用,根本什么都不做(实际上不会将其保存到我提供的内部存储器,因此应用程序本身什么都不做).
如果我打电话
File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/myImage.jpg");
Uri outputFileUri = Uri.fromFile(file);
cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
Run Code Online (Sandbox Code Playgroud)
一切都很好,照片存储在SDCard上.
我的问题是,有没有办法在没有SDCard的情况下以全分辨率存储捕获照片?
我正在寻找一种程序化视频编辑解决方案,它可以提供API,用于在视频(1080p)剪辑的特定坐标上的特定时间/帧中添加图像和文本叠加,以及调整大小到720p等.
我试过AviSynth,但由于"内存不足错误"导致总共约400次覆盖后被阻止 - 请参阅AviSynth Out of Memory错误(100s图像叠加)
还有什么我可以尝试的(示例代码会很棒)?
有没有办法检查用户的国家/地区?"Locale"不够好,因为有很多英语语言环境,但它们遍布全世界.
也许以某种方式与IMEI或......?
所以实际上我需要找出SIM卡所属的国家/地区?
编辑:不允许使用 GPS或互联网.
我有一种情况,我需要在我的数据库中存储多个值,但它们是约.同一类型的所以现在我也不知道是不是更快的值存储为一个字符串的VARCHAR领域的MySQL与分离逗号
1,2,3,4,5
Run Code Online (Sandbox Code Playgroud)
然后在我需要它们的每一个爆炸它们
$values = explode(",", $stringFromDatabase);
Run Code Online (Sandbox Code Playgroud)
其中$ stringFromDatabase是来自mysql_query + mysql_fetch_array的String,并使用$ values [0],$ values [1] 依次获取它们,依此类推
要么
为每个变量添加另一列(最多7行),然后为特定行调用数据库,并使用标准mysql_query + mysql_fetch_array过程按列分别获取它们?
那么,一列与commmas或多列连接?重要的是要注意,我总是需要它们(一个接一个)并且排序并不重要 - 所以我认为第一个选择 - 更好,更快?
我有一个MySQL标记映射表,其结构来自以下帖子 - 用于标记或标记的推荐SQL数据库设计
我有两列 - TagID和ItemID.我想对某个项目进行更新(更改它的标签).例如,我有ID = 1的项目,tagID为1,2,3.但在更新用户想要的只有ID为3,4,5的标签.显然我必须删除"1"和"2",保留"3"并添加"4"和"5".
什么是最简单的方式/最优雅的方法(使用INSERT INGORE'S,ON DUPLICATE UPDATE或MySQL的其他"功能")?
删除所有并重新插入所有"新"标签或通过它们全部删除/插入?它将是最小1,最多5个标签.或者对于如此少量的标签/操作真的无关紧要?
是否有一个选项(除了编写自定义的串行/解串器)GSON library,以不序列化/反序列化以后扩展类的一些水平.
例如,请参阅以下用例
class FirstClass {
int firstVariable;
}
class SecondClass extends FirstClass {
int secondVariable;
}
class ThirdClass extends SecondClass {
int thirdVariable;
}
Run Code Online (Sandbox Code Playgroud)
现在使用时fromJson,toJson我只想序列化/反序列化层次结构中的前两个类 - ThirdClass和SecondClass.这意味着它会忽略整个FirstClass(以及firstVariable它),因为它已经存在了level 3.
这是一个坏习惯,为什么会这样?因此,在onCreate之后添加此权限的每个活动 ......
mContext = this;
Run Code Online (Sandbox Code Playgroud)
然后用它在所有其他情况下的上下文是必需的?例如
Toast.makeText(mContext, mContext.getString(R.string.someString), Toast.LENGTH_LONG);
Run Code Online (Sandbox Code Playgroud)
编辑:如果我有这样的事情......如何传递上下文怎么办?因为这不能应用(因为View.OnClickListener()).
someButton = (Button) findViewById(R.id.someButton);
someButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(mContext, mContext.getString(R.string.warning), Toast.LENGTH_LONG).show();
}
});
Run Code Online (Sandbox Code Playgroud)