当前位置: 编程技术>移动开发
本页文章导读:
▪两个List比较,移除 两个List比较,移除,
public static void main(String[] args) {
List l_stat=new ArrayList();
l_stat.add(0, "1");
l_stat.add(1, "2");
l_stat.add(2, "3");
l_stat.add(3, "4");
l_stat.add(4, "5");
List l_end=new ArrayList();
.........
▪ 解决ScrollView和ListView冲突有关问题 解决ScrollView和ListView冲突问题
今天项目中需要在ScrollView中嵌套ListView来布局,但是这种布局是Google不提倡的,因为在滚动布局中嵌套一个滚动布局时,会出现外层的滚动布局吃掉内层滚动.........
▪ startActivityForResult的用法跟demo startActivityForResult的用法和demo
有时候我们需要把A activity提交数据给B activity处理,然后把结果返回给A
这种方式在很多种情况需要用到,比如我应用的程序需要有拍照上传的功能。
一种.........
[1]两个List比较,移除
来源: 互联网 发布时间: 2014-02-18
两个List比较,移除,
public static void main(String[] args) {
List l_stat=new ArrayList();
l_stat.add(0, "1");
l_stat.add(1, "2");
l_stat.add(2, "3");
l_stat.add(3, "4");
l_stat.add(4, "5");
List l_end=new ArrayList();
l_end.add(0, "5");
l_end.add(1, "2");
l_end.add(2, "3");
//在l_stat中查找,是否有值存在l_end中,有则移除。
for(int i=0;i< l_stat.size();i++){
String str=(String) l_stat.get(i);
for(int k=0;k < l_end.size(); k++){
String str_end=(String)l_end.get(k);
if((str).equals(str_end) ){
l_stat.remove(i);
i=i-1;//移除一个,i需要减一
}
}
}
for(int i=0;i< l_stat.size();i++){
System.out.println(l_stat.get(i));
}
/*-------------------------------------------------*/
// for(int i=0;i< l_stat.size();i++){
// //System.out.println(l_stat.get(i));
// String a="";
// String str=(String) l_stat.get(i);
// for(int k=0;k < l_end.size(); k++){
// if(i == k){
// a="have";
// str=(String) l_end.get(k)+"----";
// //System.out.println("k--------"+l_end.get(k));
// break;
// }
// }
// }
}
[2] 解决ScrollView和ListView冲突有关问题
来源: 互联网 发布时间: 2014-02-18
解决ScrollView和ListView冲突问题
今天项目中需要在ScrollView中嵌套ListView来布局,但是这种布局是Google不提倡的,因为在滚动布局中嵌套一个滚动布局时,会出现外层的滚动布局吃掉内层滚动布局的滚动事件,这样的结果是会出现两种问题:
1、导致内部控件的高度显示不完整,出现只显示部分内容的情况。
2、当内层的ListView内容很多时,外层的ScrollView显示的定位可能不是顶层显示,而是显示底部。
解决办法是参考网上各位大侠的代码而来,本人水平有限,特此记录。
上代码:
布局文件:goodsorder.xml
ListView中Item的布局:goodsOrderList.xml
最重要的是代码部分了,下面是主要的代码
1、解决显示高度问题思路是:获取ListView中Item每一行的高度,然后算出总高度,最后给ListView设置一下高度,这样系统就知道了ListView的高度。
2、解决显示定位的问题,是设置ScrollView.scrollTo(),但是此方法在onCreate()方法中使用时,必须的另开一个线程,因为此方法,需要在ScrollView中的内容完全加载之后,才会调用,在onCreate()方法没结束之前,ScrollView中的内容是没有完全加载的。
所以需要另开一个线程。
以上观点仅属个人观点,不一定正确,高手莫笑....
今天项目中需要在ScrollView中嵌套ListView来布局,但是这种布局是Google不提倡的,因为在滚动布局中嵌套一个滚动布局时,会出现外层的滚动布局吃掉内层滚动布局的滚动事件,这样的结果是会出现两种问题:
1、导致内部控件的高度显示不完整,出现只显示部分内容的情况。
2、当内层的ListView内容很多时,外层的ScrollView显示的定位可能不是顶层显示,而是显示底部。
解决办法是参考网上各位大侠的代码而来,本人水平有限,特此记录。
上代码:
布局文件:goodsorder.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/white" >
<ScrollView
android:id="@+id/scrollview"
android:scrollbars="none"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<LinearLayout
android:id="@+id/sixline"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
>
<TextView
android:id="@+id/cardMessagetext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000"
android:textSize="16sp"
android:text
/>
<TextView
android:id="@+id/cardMessage"
android:textColor="#000000"
android:textSize="14sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
<ListView
android:id="@+id/goodsList"
android:fillViewport="true"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
</ScrollView>
</RelativeLayout>ListView中Item的布局:goodsOrderList.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000"
android:textSize="14sp"
/>
<TextView
android:id="@+id/ordersn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000"
android:textSize="14sp"
/>
<TextView
android:id="@+id/orderamounttext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000"
android:textSize="14sp"
android:paddingLeft="20dp"
/>
<TextView
android:id="@+id/orderamount"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#000000"
android:textSize="14sp"
/>
</LinearLayout>最重要的是代码部分了,下面是主要的代码
public class GoodsOrderActivity extends Activity {
/** Called when the activity is first created. */
private ListView goodsView; //商品简单信息显示
private ScrollView scrollView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.goodsorder);
SimpleAdapter adapter = new SimpleAdapter(this,getData(),R.layout.goodsOrderList,
new String[]{"title","ordersn","orderamounttext","orderamount"},
new int[]{R.id.title,R.id.ordersn,R.id.orderamounttext,R.id.orderamount});
goodsView = (ListView)findViewById(R.id.goodsList);
goodsView.setAdapter(adapter);
setListViewHeight(goodsView);//设置listview的高度,在设置adapter之后设置高度
scrollView = (ScrollView)findViewById(R.id.scrollview);
scrollView.post(runnable);//设置scrollView的显示位置
}
/**
* 设置Listview的高度
*/
public void setListViewHeight(ListView listView) {
ListAdapter listAdapter = listView.getAdapter();
if (listAdapter == null) {
return;
}
int totalHeight = 0;
for (int i = 0; i < listAdapter.getCount(); i++) {
View listItem = listAdapter.getView(i, null, listView);
listItem.measure(0, 0);
totalHeight += listItem.getMeasuredHeight();
}
ViewGroup.LayoutParams params = listView.getLayoutParams();
params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
listView.setLayoutParams(params);
}
/**
* 设置scrollview显示位置,解决scrollview嵌套listview页面过长时显示问题
*/
private Runnable runnable = new Runnable() {
@Override
public void run() {
GoodsOrderActivity.this.scrollView.scrollTo(1,1);// 改变滚动条的位置
}
};
/**
*获取listview数据
*/
private List<Map<String, Object>> getData() {
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
List<Map<String,Object>> cartGoodsList = getCartGoods();
Map<String, Object> map = new HashMap<String, Object>();
map.put("orderamounttext", "数量:");
map.put("ordersn", "价格:");
map.put("title", "title");
map.put("orderamount","numberText");
list.add(map);
return list;
}1、解决显示高度问题思路是:获取ListView中Item每一行的高度,然后算出总高度,最后给ListView设置一下高度,这样系统就知道了ListView的高度。
2、解决显示定位的问题,是设置ScrollView.scrollTo(),但是此方法在onCreate()方法中使用时,必须的另开一个线程,因为此方法,需要在ScrollView中的内容完全加载之后,才会调用,在onCreate()方法没结束之前,ScrollView中的内容是没有完全加载的。
所以需要另开一个线程。
以上观点仅属个人观点,不一定正确,高手莫笑....
[3] startActivityForResult的用法跟demo
来源: 互联网 发布时间: 2014-02-18
startActivityForResult的用法和demo
有时候我们需要把A activity提交数据给B activity处理,然后把结果返回给A
这种方式在很多种情况需要用到,比如我应用的程序需要有拍照上传的功能。
一种是 我的应用程序 〉调用系统相机〉拍照〉关闭系统相机〉返回拍照后的照片到我的应用程序
启动一个ForResult的意图:
Intent intent = new Intent(MainAcitvity.this,
RequestActivity.class);
//发送意图标示为REQUSET=1
startActivityForResult(intent, REQUSET);
B Activity处理数据:
Intent intent=new Intent();
intent.putExtra(KEY_USER_ID, et01.getText().toString());
intent.putExtra(KEY_USER_PASSWORD, et02.getText().toString());
setResult(RESULT_OK, intent);
finish();
那么startActivityForResult如何使用呢:
package com.cn.activityresult.demo;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainAcitvity extends Activity {
private Button btn01;
private TextView tv01;
public static final int REQUSET = 1;
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
//requestCode标示请求的标示 resultCode表示有数据
if (requestCode == MainAcitvity.REQUSET && resultCode == RESULT_OK) {
String str = "账号"
+ data.getStringExtra(RequestActivity.KEY_USER_ID) + "\n"
+ "密码"
+ data.getStringExtra(RequestActivity.KEY_USER_PASSWORD);
tv01.setText(str);
}
Toast.makeText(
this,
"requestCode=" + requestCode + ":" + "resultCode=" + resultCode,
Toast.LENGTH_LONG).show();
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn01 = (Button) findViewById(R.id.btn01);
tv01 = (TextView) findViewById(R.id.tv01);
btn01.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent = new Intent(MainAcitvity.this,
RequestActivity.class);
//发送意图标示为REQUSET=1
startActivityForResult(intent, REQUSET);
}
});
}
}
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class RequestActivity extends Activity {
private Button btn01;
private EditText et01;
private EditText et02;
public static final String KEY_USER_ID="KEY_USER_ID";
public static final String KEY_USER_PASSWORD="KEY_USER_PASSWORD";
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.request_activity);
btn01=(Button)findViewById(R.id.btn01);
et01=(EditText)findViewById(R.id.et01);
et02=(EditText)findViewById(R.id.et02);
btn01.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent intent=new Intent();
intent.putExtra(KEY_USER_ID, et01.getText().toString());
intent.putExtra(KEY_USER_PASSWORD, et02.getText().toString());
setResult(RESULT_OK, intent);
finish();
}
});
}
}
最新技术文章: