我一直在学习在Android中开发,并且有一个更普遍的问题:如果我有一个使用列表和其他一些视图的布局,我应该在Activity类中使用Activity还是ListActivity?
我知道ListActivity可能会更容易覆盖特定于列表的事件,但使用ListActivity而不是Activity有什么其他优势吗?如果我想将来的布局更改为GridView怎么办?更改课程代码会更难/更少吗?
我只是对这方面的"最佳实践"感到好奇以及所带来的好处,所以任何答案都会有所帮助:)
巴拉
我有一个问题是关于我是否应该(以及如何)存储从网络加载的图像.假设我从我的Android应用程序调用Web服务.在这个Web服务中,我获得了Web上图像的URL.我下载并在ListView中列表项的左侧显示此图像.我的问题是,我应该使用什么方法来存储图像?我是不是该:
图像文件本身相当小,但我希望一些用户可以下载/存储这些小图像.哪种方法效果最好,和/或什么是首选方法?
作为一个附带问题,我应该首先加载我的ListView中的所有图像(并且可能会锁定UI一段时间)或者异步加载它们,但同时显示占位符图形(可能更"丑陋")?这里的标准是什么?
我即将开始开发一个新的网站,并一直在研究PHP框架.我不是一个高级的PHP开发人员,但我已经开发了几年的网站和应用程序(在asp.net中).
我的网站主要是基于AJAX(使用jQuery)并且大量调用Web服务.经过一些研究,这是我想出的:
CakePHP:最初开始在此开发,但发现它太复杂了.事实上,它迫使你使用和学习所有这些新东西只是为了使用它有点令人生畏,所以我暂时把它放在一边.
Zend:框架的性能让我有点怀疑,但我听说它对创建Web服务有很大的支持.我也听说它有点复杂.
CodeIgniter:没有使用这个的真正原因.基于我读过的CodeIgniter和Yii非常相似,但Yii有点快,并且没有PHP4不需要的代码(因为我计划在PHP5中专门开发).
至于Yii,唯一令我害怕的是它比其他框架更新,所以它有一个较小的社区.它似乎也没有大量的Web服务支持(只有SOAP,根据我的理解)而不是Zend.
所以我的问题归结为:
巴拉
我正在使用ArrayAdapter将项目添加到自定义ListView并在我的Android应用程序中显示结果.我遇到的问题是ArrayAdapter在显示视图之前似乎要等到所有项目都在其中.也就是说,当我将项添加到ArrayAdapter并调用notifyDataSetChanged时,它不会更新ListView以显示添加的项.它等待直到添加所有项目并在显示项目之前调用GetView.
我希望它能够在将项目添加到ListView后立即显示该项目.这可能吗?
我相信相关的代码如下:
r_adapter = new ReminderAdapater(Activity_ContentSearch.this, R.layout.search_listitem, myList);
listView.setAdapter(r_adapter);
...
r_adapter.notifyDataSetChanged();
r_adapter.clear();
for(int i = 0; i < myList.size(); i++)
{
r_adapter.add(myList.get(i));
r_adapter.notifyDataSetChanged();
}
Run Code Online (Sandbox Code Playgroud)
如您所见,即使我在add方法之后调用notifyDataSetChanged,它实际上也不会更新视图.在完成上面的循环之后,视图最终被更新(基于我所知道的,这是因为在完成代码的这一部分之后才调用GetView).
我试图覆盖我的自定义ArrayAdapter的add方法,没有运气,因为我无法访问该方法中的视图.
欢迎任何帮助:)
巴拉
android listview android-arrayadapter android-listview android-asynctask
我想创建一个接受自定义对象列表的Web方法(通过jQuery/JSON传入).
当我在本地运行网站时,一切似乎都有效.jQuery和ASP.NET,每个人都很高兴.但当我把它放在我们的一台服务器上时,它会爆炸.在ajax请求之后,jQuery获得500错误,响应为:
System.InvalidOperationException:EditCustomObjects Web服务方法名称无效.
这是Web服务方法:
[WebMethod]
public void EditCustomObjects(int ID, List<CustomObject> CustomObjectList)
{
// Code here
}
Run Code Online (Sandbox Code Playgroud)
我的jQuery代码(我觉得不重要,因为错误似乎发生在Web服务级别):
var data = JSON.stringify({
ID: id,
CustomObjectList: customObjectList
});
$.ajax({
type: "POST",
url: "/manageobjects.asmx/EditCustomObjects",
data: data,
contentType: "application/json; charset=utf-8",
async: false,
dataType: "json",
success: function(xml, ajaxStatus) {
// stuff here
}
});
Run Code Online (Sandbox Code Playgroud)
customObjectList初始化如下:
var customObjectList = [];
Run Code Online (Sandbox Code Playgroud)
我像这样添加项目(通过循环):
var itemObject = {
ObjectTitle = objectTitle,
ObjectDescription = objectDescription,
ObjectValue = objectValue
}
customObjectList.push(itemObject);
Run Code Online (Sandbox Code Playgroud)
那么,我在这里做错了吗?有没有更好的方法将数据数组从jQuery传递到ASP.NET Web服务方法?有没有办法解决"Web服务方法名称无效".错误?
仅供参考,我在Windows Server 2003机器上运行.NET 2.0,我从这个站点获得了上述代码:http://elegantcode.com/2009/02/21/javascript-arrays-via-jquery-ajax …
我有一个半复杂的问题,希望有人能够帮助我.
在单击事件上,我创建一个线程并基于此方法启动长时间运行的操作.在长时间运行的任务完成后,它会回调到另一种方法,它不后的处理程序:
@Override
public void contentSearchModelChanged(Model_ContentSearch csm, ArrayList<Class_Reminder> newRemindersList) {
remindersList = newRemindersList;
mHandler.post(mUpdateDisplayRunnable);
}
Run Code Online (Sandbox Code Playgroud)
哪个叫Runnable:
// post this to the Handler when the background thread completes
private final Runnable mUpdateDisplayRunnable = new Runnable() {
public void run() {
updateDisplay();
}
};
Run Code Online (Sandbox Code Playgroud)
最后,这是我的updateDisplay()方法正在做的事情:
private void updateDisplay() {
if (csModel.getState() != Model_ContentSearch.State.RUNNING) {
if(remindersList != null && remindersList.size() > 0){
r_adapter = new ReminderAdapater(Activity_ContentSearch.this, remindersList, thisListView);
thisListView.setAdapter(r_adapter);
r_adapter.notifyDataSetChanged();
}
}
}
Run Code Online (Sandbox Code Playgroud)
当我正常地这样做时,这很好用.不过,如果我更改方向的长时间运行的操作运行时,这是行不通的.它确实使回调正确,并且remindersList确实包含项目.但是当它达到这条线时:
r_adapter.notifyDataSetChanged();
Run Code Online (Sandbox Code Playgroud)
什么都没发生.奇怪的是,如果我做的另一项提交并使其再次运行全过程(不改变方向),它实际上更新视图两次,一次为前下一个提交又一次.所以一旦与第一结果视图更新提交,然后再次与第二提交第二次以后的结果.因此,适配器DID获取数据,它只是不刷新视图.
我知道这与方向改变有关,但我不能为我的生活找出原因.有人可以帮忙吗?或者,任何人都可以建议一种处理方向更改线程的替代方法吗?
巴拉
multithreading android listview orientation android-arrayadapter
android ×4
jquery ×2
listview ×2
asmx ×1
asp.net ×1
caching ×1
frameworks ×1
listactivity ×1
orientation ×1
php ×1
sd-card ×1
storage ×1
web-services ×1
yii ×1