刷卡ListView项详细的活动向左或向右的Android滑动查看 [英] Swipe listview item detailed activity left or right to slide view in android
问题描述
我有一个列表视图,当我在列表视图中点击任何项目的详细活动将open.This布局有许多像小部件TextView的,ImageView的,共享按钮等。现在我想滑项目的这个细节活动,以显示列表中的下一个项目的详细信息视图。我下面这个 http://misha.beshkin.lv/android-swipe-gesture-执行/ 但是当我从左至右下一个视图不显示刚开举杯消息向右滑动,刷卡。任何一个可以告诉我如何在这方面的工作?我是新来的Android答案将AP preciated。以下是code我已经使用
MainActivity.java(列表视图页)
公共类MainActivity扩展ListActivity {ArrayList的<&HashMap的LT;字符串,字符串>> songsList;
ListView控件列表;
LazyAdapter适配器;
JSONArray职位;
//所有静态变量
静态最终字符串URL =HTTP:// SITEURL /职位/页;静态最后弦乐KEY_URL_FOR_MAP =url_site;
静态最后弦乐KEY_POSTS =上岗;
静态最后弦乐KEY_ID =ID;
静态最后弦乐KEY_TITLE =称号;
静态最后弦乐KEY_SITEURL =URL;
静态最后弦乐KEY_DATE =日期;
静态最后弦乐KEY_CONTENT =内容;
静态最后弦乐KEY_AUTHOR =作者;
静态最后弦乐KEY_NAME =名;
静态最后弦乐KEY_ATTACHMENTS =附件;
静态最后弦乐KEY_SLUG =塞;
静态最后弦乐KEY_THUMB_URL =缩略图;
静态最后弦乐KEY_IMAGES =图像;
静态最后弦乐KEY_URL =URL;@覆盖
公共无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_main);
最终的ArrayList<&HashMap的LT;字符串,字符串>> songsList =新的ArrayList<&HashMap的LT;字符串,字符串>>();
//创建JSON解析器实例
最后JSONParser jParser =新JSONParser(); // URL从获取JSON字符串
JSONObject的JSON = jParser.getJSONFromUrl(URL);
尝试{
帖= json.getJSONArray(KEY_POSTS); //遍历所有歌曲节点&LT循环;宋>
的for(int i = 0; I< posts.length();我++){
JSONObject的C = posts.getJSONObject(I)
//存储在变量中的每个JSON项目
字符串ID = c.getString(KEY_ID);
字符串title = c.getString(KEY_TITLE);
字符串SITEURL = c.getString(KEY_SITEURL);
字符串日期= c.getString(KEY_DATE);
字符串内容= c.getString(KEY_CONTENT);
//删除所有< P> &所述; / P>和< BR />而代之以
含量= content.replace(&所述峰; br />中,);
含量= content.replace(&所述; P>中,);
含量= content.replace(&下; / P>中,); // authornumber是阿恩JSON对象
笔者的JSONObject = c.getJSONObject(KEY_AUTHOR);
字符串名称= author.getString(KEY_NAME); 字符串URL = NULL;
字符串蛞蝓= NULL;
尝试{
JSONArray阿塔= c.getJSONArray(附件);
对于(INT J = 0; J< atta.length(); J ++){
JSONObject的D = atta.getJSONObject(J); 蛞蝓= d.getString(KEY_SLUG); JSONObject的图像= d.getJSONObject(KEY_IMAGES); JSONObject的缩略图= images.getJSONObject(KEY_THUMB_URL);
URL = thumbnail.getString(KEY_URL); }
}赶上(例外五){
e.printStackTrace(); }
//创建新的HashMap
HashMap的<字符串,字符串>地图=新的HashMap<字符串,字符串>(); //将每个子节点的HashMap键=>值
map.put(KEY_ID,身份证);
map.put(KEY_TITLE,职称);
map.put(KEY_URL_FOR_MAP,主页);
map.put(KEY_DATE,日期);
map.put(KEY_NAME,名);
map.put(KEY_CONTENT,内容);
map.put(KEY_SLUG,蛞蝓);
map.put(KEY_URL,URL); //添加HashList到ArrayList的
songsList.add(地图);
}
}赶上(JSONException E){
e.printStackTrace(); } 最终的ListView列表=(ListView控件)findViewById(android.R.id.list); //通过传递JSON数据的ArrayList获取适配器
适配器=新LazyAdapter(这一点,songsList);
list.setAdapter(适配器); //在选择单列表项启动新画面
list.setOnItemClickListener(新OnItemClickListener(){ 公共无效onItemClick(适配器视图<>母公司,观景,
INT位置,长的id){
HashMap的<字符串,字符串>地图= songsList.get(位置); 在意向=新意图(MainActivity.this,SampleDesp.class);
in.putExtra(KEY_TITLE,map.get(KEY_TITLE));
in.putExtra(KEY_URL_FOR_MAP,map.get(KEY_URL_FOR_MAP));
in.putExtra(KEY_DATE,map.get(KEY_DATE));
in.putExtra(KEY_NAME,map.get(KEY_NAME));
in.putExtra(KEY_CONTENT,map.get(KEY_CONTENT));
in.putExtra(KEY_URL,map.get(KEY_URL)); startActivity(在);
}
}); }
}
SampleDesp.java(详细的活动)
公共类SampleDesp扩展活动实现SimpleGestureListener {
私人SimpleGestureFilter检测器; 静态字符串称号;
字符串内容;
// Facebook应用程序ID
私人静态字符串APP_ID =308180782571605; //你的应用程序ID替换 // Facebook的类的实例
私人使用Facebook =新的Facebook(APP_ID);
私人AsyncFacebookRunner mAsyncRunner;
字符串文件名=AndroidSSO_data;
私人共享preferences米preFS; 按钮btnFbLogin;
按钮btnPostToWall; // JSON节点键
静态最后弦乐KEY_URL_FOR_MAP =url_site;
私有静态最后弦乐KEY_TITLE =称号;
私有静态最后弦乐KEY_SITEURL =URL;
私有静态最后弦乐KEY_DATE =日期;
私有静态最后弦乐KEY_NAME =名;
私有静态最后弦乐KEY_CONTENT =内容;
私有静态最后弦乐KEY_URL =URL;
静态最后弦乐KEY_SLUG1 =塞;
@覆盖
公共无效的onCreate(捆绑savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.sampledes);
探测器=新SimpleGestureFilter(这一点,这一点); 最终的LinearLayout行1 =(的LinearLayout)findViewById(R.id.ll1);
2号线的LinearLayout =(的LinearLayout)findViewById(R.id.ll2); 按钮btnShare =(按钮)findViewById(R.id.share); btnShare.setOnClickListener(新OnClickListener(){ 公共无效的onClick(视图v){
// TODO自动生成方法存根
line1.setVisibility(View.VISIBLE); }
});
//获取数据的意图
在意向= getIntent();
最后弦乐为url1 = in.getStringExtra(KEY_URL); ImageView的imgv =(ImageView的)findViewById(R.id.imgdesc);
ImageLoader的ImageLoader的=新ImageLoader的(getApplicationContext());
imageLoader.DisplayImage(URL1,imgv); //从previous意图JSON值 最后弦乐标题= in.getStringExtra(KEY_TITLE);
最后弦乐SITEURL = in.getStringExtra(KEY_URL_FOR_MAP);
字符串日期= in.getStringExtra(KEY_DATE);
字符串名称= in.getStringExtra(KEY_NAME);
最终字符串内容= in.getStringExtra(KEY_CONTENT); //在屏幕上显示的所有值
TextView的lblName =(的TextView)findViewById(R.id.name_label);
TextView的lblUrl =(的TextView)findViewById(R.id.url_label); TextView的lblCost =(的TextView)findViewById(R.id.email_label);
TextView的lblDesc =(的TextView)findViewById(R.id.mobile_label);
TextView的lblCont =(的TextView)findViewById(R.id.content_label); lblName.setText(职称);
lblUrl.setText(SITEURL);
lblCost.setText(日期);
lblDesc.setText(名);
lblCont.setText(内容); 最后ImageView的EMAIL3 =(ImageView的)findViewById(R.id.email);
email3.setOnClickListener(新View.OnClickListener(){
公共无效的onClick(视图v){
//我的codeS
意向意图=新意图(Intent.ACTION_VIEW);
乌里数据= Uri.parse(?至mailto:主题=+标题+&放大器;身体=+内容);
intent.setData(数据);
startActivity(意向);
} });
最后ImageView的SMS4 =(ImageView的)findViewById(R.id.sms);
sms4.setOnClickListener(新View.OnClickListener(){
公共无效的onClick(视图v){
//执行上的点击动作 意图shareIntent =新意图(Intent.ACTION_SEND);
shareIntent.setData(Uri.parse(Uri.en code(职称)+ Uri.en code(内容))); shareIntent.setType(文/ *);
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT,内容);
startActivity(shareIntent);
}
}); 最后ImageView的twitter4 =(ImageView的)findViewById(R.id.twitter);
twitter4.setOnClickListener(新View.OnClickListener(){
公共无效的onClick(视图v){
//执行上的点击动作
意图I =新意图(Intent.ACTION_VIEW);
i.setData(Uri.parse(http://twitter.com/?status=+ Uri.en code(职称)++ Uri.en code(SITEURL)));
startActivity(ⅰ); }
}); 按钮btnFbLogin =(按钮)findViewById(R.id.btn_fblogin);
btnFbLogin.setOnClickListener(新View.OnClickListener(){ @覆盖
公共无效的onClick(视图v){
Log.d(图像按钮,单击按钮);
loginToFacebook();
如果(facebook.isSessionValid()){
postToWall();
}
}
});
}
@覆盖
公共布尔dispatchTouchEvent(MotionEvent我){
this.detector.onTouchEvent(箱);
返回super.dispatchTouchEvent(箱);
}
公共无效onSwipe(INT方向){
字符串str =; 开关(方向){ 案例SimpleGestureFilter.SWIPE_RIGHT:海峡=刷卡右;
打破;
案例SimpleGestureFilter.SWIPE_LEFT:海峡=向左滑动
打破;
案例SimpleGestureFilter.SWIPE_DOWN:海峡=向下滑动
打破;
案例SimpleGestureFilter.SWIPE_UP:海峡=刷卡向上;
打破; }
Toast.makeText(这一点,STR,Toast.LENGTH_SHORT).show();
} 公共无效onDoubleTap(){
Toast.makeText(这一点,枪王,Toast.LENGTH_SHORT).show();
}
/ **
*功能登录到Facebook的
* * / 私人无效loginToFacebook(){
// TODO自动生成方法存根
{ 米preFS = GET preferences(MODE_PRIVATE);
字符串的access_token = M prefs.getString(的access_token,NULL);
长到期= M prefs.getLong(access_expires,0); 如果(ACCESS_TOKEN!= NULL){
facebook.setAccessToken(的access_token); Log.d(FB会话,+ facebook.isSessionValid());
} 如果(到期!= 0){
facebook.setAccessExpires(到期);
} 如果(!facebook.isSessionValid()){
facebook.authorize(这一点,
新的String [] {电子邮件,publish_stream},
新DialogListener(){ @覆盖
公共无效onCancel(){
//函数来处理事件取消
} @覆盖
公共无效的onComplete(束值){
//函数来处理完成事件
//编辑preferences和更新Facebook的acess_token
共享preferences.Editor编辑= M prefs.edit();
editor.putString(的access_token
facebook.getAccessToken());
editor.putLong(access_expires
facebook.getAccessExpires());
editor.commit(); } @覆盖
公共无效onerror的(DialogError错误){
//函数来处理错误 } @覆盖
公共无效onFacebookError(FacebookError fberror){
//函数来处理Facebook的错误 } }); }其他{}
}
}
/ **
*功能张贴到Facebook涂鸦墙
* * /
公共无效postToWall(){
捆绑参数=新包();
parameters.putString(称号,光临);
parameters.putString(链接,http://india.dollardesi.net/ads/metro-logistic-packers-movers/); //后用户的墙上。
facebook.dialog(这一点,饲料,参数,新DialogListener(){ @覆盖
公共无效onFacebookError(FacebookError E){
} @覆盖
公共无效onerror的(DialogError E){
} @覆盖
公共无效的onComplete(束值){
} @覆盖
公共无效onCancel(){
} }); } / **
*功能,以从Facebook注销用户
* * /
公共无效logoutFromFacebook(){
mAsyncRunner.logout(这一点,新RequestListener(){
@覆盖
公共无效的onComplete(字符串响应,对象的状态){
Log.d(注销从Facebook,响应);
如果(Boolean.parseBoolean(响应)==真){
runOnUiThread(新的Runnable(){ @覆盖
公共无效的run(){
//使登录按钮可见
btnFbLogin.setVisibility(View.VISIBLE);
} }); }
} @覆盖
公共无效onIOException(IOException异常即对象的状态){
} @覆盖
公共无效onFileNotFoundException(FileNotFoundException异常E,
对象的状态){
} @覆盖
公共无效onMalformedURLException(MalformedURLException的E,
对象的状态){
} @覆盖
公共无效onFacebookError(FacebookError即对象的状态){
} });
} }
SimpleGestureFilter.java
公共类SimpleGestureFilter扩展SimpleOnGestureListener { 公众最终静态INT SWIPE_UP = 1;
公众最终静态INT SWIPE_DOWN = 2;
公众最终静态INT SWIPE_LEFT = 3;
公众最终静态INT SWIPE_RIGHT = 4; 公众最终静态INT MODE_TRANSPARENT = 0;
公众最终静态INT MODE_SOLID = 1;
公众最终静态INT MODE_DYNAMIC = 2; 私人最终静态INT ACTION_FAKE = -13; //只是一个不可能的数字
私人INT swipe_Min_Distance = 100;
私人INT swipe_Max_Distance = 350;
私人INT swipe_Min_Velocity = 100; 私人INT模式= MODE_DYNAMIC;
私人布尔运行= TRUE;
私人布尔tapIndicator = FALSE; 私人活动范围内;
私人GestureDetector检测器;
私人SimpleGestureListener侦听器;
公共SimpleGestureFilter(Activity上下文,SimpleGestureListener SGL){ this.context =背景;
this.detector =新GestureDetector(上下文,本);
this.listener = SGL;
} 公共无效onTouchEvent(MotionEvent事件){ 如果(!this.running)
返回; 布尔结果= this.detector.onTouchEvent(事件); 如果(this.mode == MODE_SOLID)
event.setAction(MotionEvent.ACTION_CANCEL);
否则,如果(this.mode == MODE_DYNAMIC){ 如果(event.getAction()== ACTION_FAKE)
event.setAction(MotionEvent.ACTION_UP);
否则,如果(结果)
event.setAction(MotionEvent.ACTION_CANCEL);
否则,如果(this.tapIndicator){
event.setAction(MotionEvent.ACTION_DOWN);
this.tapIndicator = FALSE;
} }
//否则只是做什么,它是透明的
} 公共无效setMode(INT米){
this.mode =米;
} 公众诠释获取模式(){
返回this.mode;
} 公共无效的setEnabled(布尔状态){
this.running =状态;
} 公共无效setSwipeMaxDistance(INT距离){
this.swipe_Max_Distance =距离;
} 公共无效setSwipeMinDistance(INT距离){
this.swipe_Min_Distance =距离;
} 公共无效setSwipeMinVelocity(INT距离){
this.swipe_Min_Velocity =距离;
} 公众诠释getSwipeMaxDistance(){
返回this.swipe_Max_Distance;
} 公众诠释getSwipeMinDistance(){
返回this.swipe_Min_Distance;
} 公众诠释getSwipeMinVelocity(){
返回this.swipe_Min_Velocity;
}
@覆盖
公共布尔onFling(MotionEvent E1,E2 MotionEvent,浮velocityX,
浮动velocityY){ 最终浮动xDistance = Math.abs(e1.getX() - e2.getX());
最终浮动yDistance = Math.abs(e1.getY() - e2.getY()); 如果(xDistance> this.swipe_Max_Distance || yDistance> this.swipe_Max_Distance)
返回false; velocityX = Math.abs(velocityX);
velocityY = Math.abs(velocityY);
布尔结果= FALSE; 如果(velocityX> this.swipe_Min_Velocity和放大器;&安培; xDistance> this.swipe_Min_Distance){
如果(e1.getX()> e2.getX())//从右到左
this.listener.onSwipe(SWIPE_LEFT);
其他
this.listener.onSwipe(SWIPE_RIGHT); 结果=真;
}
否则,如果(velocityY> this.swipe_Min_Velocity和放大器;&安培; yDistance> this.swipe_Min_Distance){
如果(e1.getY()> e2.getY())//自下而上
this.listener.onSwipe(SWIPE_UP);
其他
this.listener.onSwipe(SWIPE_DOWN); 结果=真;
} 返回结果;
} @覆盖
公共布尔onSingleTapUp(MotionEvent五){
this.tapIndicator = TRUE;
返回false;
} @覆盖
公共布尔onDoubleTap(MotionEvent为arg0){
this.listener.onDoubleTap();;
返回true;
} @覆盖
公共布尔onDoubleTapEvent(MotionEvent为arg0){
返回true;
} @覆盖
公共布尔onSingleTapConfirmed(MotionEvent为arg0){ 如果(this.mode == MODE_DYNAMIC){//我们欠的ACTION_UP,所以我们假的
arg0.setAction(ACTION_FAKE); //动作稍后将转换为ACTION_UP。
this.context.dispatchTouchEvent(为arg0);
} 返回false;
}
静态接口SimpleGestureListener {
无效onSwipe(INT方向);
无效onDoubleTap();
}}
改变
情况下SimpleGestureFilter.SWIPE_LEFT:海峡=向左滑动
打破;
到
情况下SimpleGestureFilter.SWIPE_LEFT:海峡=向左滑动
//火意图您的详细活动在这里
打破;
我希望我靠近你的解决方案。
I have a listview, when i click on any item in listview a detailed activity will open.This layout has many widgets like textview, ImageView, share buttons etc. Now I want to slide this detail activity of the item to show the detail view of next item in the list. I am following this http://misha.beshkin.lv/android-swipe-gesture-implementation/ but when i swipe from left to right next view is not displaying just getting a toast message "swipe right". Can any one direct me how to work on this? i am new to android Answers will be appreciated. Following is the code i have used
MainActivity.java(listview page)
public class MainActivity extends ListActivity {
ArrayList<HashMap<String, String>> songsList;
ListView list;
LazyAdapter adapter;
JSONArray posts;
// All static variables
static final String URL = "http://siteurl/posts/pages";
static final String KEY_URL_FOR_MAP = "url_site";
static final String KEY_POSTS = "posts";
static final String KEY_ID = "id";
static final String KEY_TITLE = "title";
static final String KEY_SITEURL = "url";
static final String KEY_DATE = "date";
static final String KEY_CONTENT = "content";
static final String KEY_AUTHOR = "author";
static final String KEY_NAME = "name";
static final String KEY_ATTACHMENTS = "attachments";
static final String KEY_SLUG = "slug";
static final String KEY_THUMB_URL = "thumbnail";
static final String KEY_IMAGES = "images";
static final String KEY_URL = "url";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
// Creating JSON Parser instance
final JSONParser jParser = new JSONParser();
// getting JSON string from URL
JSONObject json = jParser.getJSONFromUrl(URL);
try {
posts = json.getJSONArray(KEY_POSTS);
// looping through all song nodes <song>
for(int i = 0; i < posts.length(); i++){
JSONObject c = posts.getJSONObject(i);
// Storing each json item in variable
String id = c.getString(KEY_ID);
String title = c.getString(KEY_TITLE);
String siteurl = c.getString(KEY_SITEURL);
String date = c.getString(KEY_DATE);
String content = c.getString(KEY_CONTENT);
// to remove all <P> </p> and <br /> and replace with ""
content = content.replace("<br />", "");
content = content.replace("<p>", "");
content = content.replace("</p>", "");
//authornumber is agin JSON Object
JSONObject author = c.getJSONObject(KEY_AUTHOR);
String name = author.getString(KEY_NAME);
String url = null;
String slug = null;
try {
JSONArray atta = c.getJSONArray("attachments");
for(int j = 0; j < atta.length(); j++){
JSONObject d = atta.getJSONObject(j);
slug = d.getString(KEY_SLUG);
JSONObject images = d.getJSONObject(KEY_IMAGES);
JSONObject thumbnail = images.getJSONObject(KEY_THUMB_URL);
url = thumbnail.getString(KEY_URL);
}
} catch (Exception e) {
e.printStackTrace();
}
// creating new HashMap
HashMap<String, String> map = new HashMap<String, String>();
// adding each child node to HashMap key => value
map.put(KEY_ID, id);
map.put(KEY_TITLE, title);
map.put(KEY_URL_FOR_MAP, siteurl);
map.put(KEY_DATE, date);
map.put(KEY_NAME, name);
map.put(KEY_CONTENT, content);
map.put(KEY_SLUG, slug);
map.put(KEY_URL, url);
// adding HashList to ArrayList
songsList.add(map);
}
}catch (JSONException e) {
e.printStackTrace();
}
final ListView list=(ListView)findViewById(android.R.id.list);
// Getting adapter by passing json data ArrayList
adapter=new LazyAdapter(this, songsList);
list.setAdapter(adapter);
// Launching new screen on Selecting Single ListItem
list.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
HashMap<String, String> map = songsList.get(position);
Intent in = new Intent(MainActivity.this, SampleDesp.class);
in.putExtra(KEY_TITLE, map.get(KEY_TITLE));
in.putExtra(KEY_URL_FOR_MAP, map.get(KEY_URL_FOR_MAP));
in.putExtra(KEY_DATE, map.get(KEY_DATE));
in.putExtra(KEY_NAME, map.get(KEY_NAME));
in.putExtra(KEY_CONTENT, map.get(KEY_CONTENT));
in.putExtra(KEY_URL, map.get(KEY_URL));
startActivity(in);
}
});
}
}
SampleDesp.java(detailed Activity)
public class SampleDesp extends Activity implements SimpleGestureListener {
private SimpleGestureFilter detector;
static String title;
String content;
// Your Facebook APP ID
private static String APP_ID = "308180782571605"; // Replace with your App ID
// Instance of Facebook Class
private Facebook facebook = new Facebook(APP_ID);
private AsyncFacebookRunner mAsyncRunner;
String FILENAME = "AndroidSSO_data";
private SharedPreferences mPrefs;
Button btnFbLogin;
Button btnPostToWall;
// JSON node keys
static final String KEY_URL_FOR_MAP = "url_site";
private static final String KEY_TITLE = "title";
private static final String KEY_SITEURL = "url";
private static final String KEY_DATE = "date";
private static final String KEY_NAME = "name";
private static final String KEY_CONTENT = "content";
private static final String KEY_URL = "url";
static final String KEY_SLUG1= "slug";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sampledes);
detector = new SimpleGestureFilter(this,this);
final LinearLayout line1 = (LinearLayout)findViewById(R.id.ll1);
LinearLayout line2 = (LinearLayout)findViewById(R.id.ll2);
Button btnShare = (Button)findViewById(R.id.share);
btnShare.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// TODO Auto-generated method stub
line1.setVisibility(View.VISIBLE);
}
});
// getting intent data
Intent in = getIntent();
final String url1 = in.getStringExtra(KEY_URL);
ImageView imgv = (ImageView) findViewById(R.id.imgdesc);
ImageLoader imageLoader = new ImageLoader(getApplicationContext());
imageLoader.DisplayImage(url1, imgv);
// Get JSON values from previous intent
final String title = in.getStringExtra(KEY_TITLE);
final String siteurl = in.getStringExtra(KEY_URL_FOR_MAP);
String date = in.getStringExtra(KEY_DATE);
String name = in.getStringExtra(KEY_NAME);
final String content = in.getStringExtra(KEY_CONTENT);
// Displaying all values on the screen
TextView lblName = (TextView) findViewById(R.id.name_label);
TextView lblUrl = (TextView) findViewById(R.id.url_label);
TextView lblCost = (TextView) findViewById(R.id.email_label);
TextView lblDesc = (TextView) findViewById(R.id.mobile_label);
TextView lblCont = (TextView) findViewById(R.id.content_label);
lblName.setText(title);
lblUrl.setText(siteurl);
lblCost.setText(date);
lblDesc.setText(name);
lblCont.setText(content);
final ImageView email3 = (ImageView) findViewById(R.id.email);
email3.setOnClickListener(new View.OnClickListener() {
public void onClick(View v){
//my codes
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri data = Uri.parse("mailto:?subject=" + title + "&body=" + content);
intent.setData(data);
startActivity(intent);
}
});
final ImageView sms4 = (ImageView) findViewById(R.id.sms);
sms4.setOnClickListener(new View.OnClickListener() {
public void onClick(View v){
// Perform action on click
Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setData(Uri.parse(Uri.encode(title)+Uri.encode(content)));
shareIntent.setType("text/*");
shareIntent.putExtra(android.content.Intent.EXTRA_TEXT, content);
startActivity(shareIntent);
}
});
final ImageView twitter4 = (ImageView) findViewById(R.id.twitter);
twitter4.setOnClickListener(new View.OnClickListener() {
public void onClick(View v){
// Perform action on click
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse("http://twitter.com/?status=" + Uri.encode(title) + "" + Uri.encode(siteurl)));
startActivity(i);
}
});
Button btnFbLogin = (Button) findViewById(R.id.btn_fblogin);
btnFbLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("Image Button", "button Clicked");
loginToFacebook();
if (facebook.isSessionValid()) {
postToWall();
}
}
});
}
@Override
public boolean dispatchTouchEvent(MotionEvent me){
this.detector.onTouchEvent(me);
return super.dispatchTouchEvent(me);
}
public void onSwipe(int direction) {
String str = "";
switch (direction) {
case SimpleGestureFilter.SWIPE_RIGHT : str = "Swipe Right";
break;
case SimpleGestureFilter.SWIPE_LEFT : str = "Swipe Left";
break;
case SimpleGestureFilter.SWIPE_DOWN : str = "Swipe Down";
break;
case SimpleGestureFilter.SWIPE_UP : str = "Swipe Up";
break;
}
Toast.makeText(this, str, Toast.LENGTH_SHORT).show();
}
public void onDoubleTap() {
Toast.makeText(this, "Double Tap", Toast.LENGTH_SHORT).show();
}
/**
* Function to login into facebook
* */
private void loginToFacebook() {
// TODO Auto-generated method stub
{
mPrefs = getPreferences(MODE_PRIVATE);
String access_token = mPrefs.getString("access_token", null);
long expires = mPrefs.getLong("access_expires", 0);
if (access_token != null) {
facebook.setAccessToken(access_token);
Log.d("FB Sessions", "" + facebook.isSessionValid());
}
if (expires != 0) {
facebook.setAccessExpires(expires);
}
if (!facebook.isSessionValid()) {
facebook.authorize(this,
new String[] { "email", "publish_stream" },
new DialogListener() {
@Override
public void onCancel() {
// Function to handle cancel event
}
@Override
public void onComplete(Bundle values) {
// Function to handle complete event
// Edit Preferences and update facebook acess_token
SharedPreferences.Editor editor = mPrefs.edit();
editor.putString("access_token",
facebook.getAccessToken());
editor.putLong("access_expires",
facebook.getAccessExpires());
editor.commit();
}
@Override
public void onError(DialogError error) {
// Function to handle error
}
@Override
public void onFacebookError(FacebookError fberror) {
// Function to handle Facebook errors
}
});
}else{}
}
}
/**
* Function to post to facebook wall
* */
public void postToWall() {
Bundle parameters = new Bundle();
parameters.putString("title", "visit us");
parameters.putString("link", "http://india.dollardesi.net/ads/metro-logistic-packers-movers/");
// post on user's wall.
facebook.dialog(this, "feed",parameters, new DialogListener() {
@Override
public void onFacebookError(FacebookError e) {
}
@Override
public void onError(DialogError e) {
}
@Override
public void onComplete(Bundle values) {
}
@Override
public void onCancel() {
}
});
}
/**
* Function to Logout user from Facebook
* */
public void logoutFromFacebook() {
mAsyncRunner.logout(this, new RequestListener() {
@Override
public void onComplete(String response, Object state) {
Log.d("Logout from Facebook", response);
if (Boolean.parseBoolean(response) == true) {
runOnUiThread(new Runnable() {
@Override
public void run() {
// make Login button visible
btnFbLogin.setVisibility(View.VISIBLE);
}
});
}
}
@Override
public void onIOException(IOException e, Object state) {
}
@Override
public void onFileNotFoundException(FileNotFoundException e,
Object state) {
}
@Override
public void onMalformedURLException(MalformedURLException e,
Object state) {
}
@Override
public void onFacebookError(FacebookError e, Object state) {
}
});
}
}
SimpleGestureFilter.java
public class SimpleGestureFilter extends SimpleOnGestureListener{
public final static int SWIPE_UP = 1;
public final static int SWIPE_DOWN = 2;
public final static int SWIPE_LEFT = 3;
public final static int SWIPE_RIGHT = 4;
public final static int MODE_TRANSPARENT = 0;
public final static int MODE_SOLID = 1;
public final static int MODE_DYNAMIC = 2;
private final static int ACTION_FAKE = -13; //just an unlikely number
private int swipe_Min_Distance = 100;
private int swipe_Max_Distance = 350;
private int swipe_Min_Velocity = 100;
private int mode = MODE_DYNAMIC;
private boolean running = true;
private boolean tapIndicator = false;
private Activity context;
private GestureDetector detector;
private SimpleGestureListener listener;
public SimpleGestureFilter(Activity context,SimpleGestureListener sgl) {
this.context = context;
this.detector = new GestureDetector(context, this);
this.listener = sgl;
}
public void onTouchEvent(MotionEvent event){
if(!this.running)
return;
boolean result = this.detector.onTouchEvent(event);
if(this.mode == MODE_SOLID)
event.setAction(MotionEvent.ACTION_CANCEL);
else if (this.mode == MODE_DYNAMIC) {
if(event.getAction() == ACTION_FAKE)
event.setAction(MotionEvent.ACTION_UP);
else if (result)
event.setAction(MotionEvent.ACTION_CANCEL);
else if(this.tapIndicator){
event.setAction(MotionEvent.ACTION_DOWN);
this.tapIndicator = false;
}
}
//else just do nothing, it's Transparent
}
public void setMode(int m){
this.mode = m;
}
public int getMode(){
return this.mode;
}
public void setEnabled(boolean status){
this.running = status;
}
public void setSwipeMaxDistance(int distance){
this.swipe_Max_Distance = distance;
}
public void setSwipeMinDistance(int distance){
this.swipe_Min_Distance = distance;
}
public void setSwipeMinVelocity(int distance){
this.swipe_Min_Velocity = distance;
}
public int getSwipeMaxDistance(){
return this.swipe_Max_Distance;
}
public int getSwipeMinDistance(){
return this.swipe_Min_Distance;
}
public int getSwipeMinVelocity(){
return this.swipe_Min_Velocity;
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
final float xDistance = Math.abs(e1.getX() - e2.getX());
final float yDistance = Math.abs(e1.getY() - e2.getY());
if(xDistance > this.swipe_Max_Distance || yDistance > this.swipe_Max_Distance)
return false;
velocityX = Math.abs(velocityX);
velocityY = Math.abs(velocityY);
boolean result = false;
if(velocityX > this.swipe_Min_Velocity && xDistance > this.swipe_Min_Distance){
if(e1.getX() > e2.getX()) // right to left
this.listener.onSwipe(SWIPE_LEFT);
else
this.listener.onSwipe(SWIPE_RIGHT);
result = true;
}
else if(velocityY > this.swipe_Min_Velocity && yDistance > this.swipe_Min_Distance){
if(e1.getY() > e2.getY()) // bottom to up
this.listener.onSwipe(SWIPE_UP);
else
this.listener.onSwipe(SWIPE_DOWN);
result = true;
}
return result;
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
this.tapIndicator = true;
return false;
}
@Override
public boolean onDoubleTap(MotionEvent arg0) {
this.listener.onDoubleTap();;
return true;
}
@Override
public boolean onDoubleTapEvent(MotionEvent arg0) {
return true;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent arg0) {
if(this.mode == MODE_DYNAMIC){ // we owe an ACTION_UP, so we fake an
arg0.setAction(ACTION_FAKE); //action which will be converted to an ACTION_UP later.
this.context.dispatchTouchEvent(arg0);
}
return false;
}
static interface SimpleGestureListener{
void onSwipe(int direction);
void onDoubleTap();
}
}
change
case SimpleGestureFilter.SWIPE_LEFT : str = "Swipe Left";
break;
to
case SimpleGestureFilter.SWIPE_LEFT : str = "Swipe Left";
//Fire intent to your detail activity here
break;
I hope I am closer to your solution.
这篇关于刷卡ListView项详细的活动向左或向右的Android滑动查看的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!