【问题标题】:Sliding from left to right to make call(like samsung contacts listview)从左到右滑动拨打电话(如三星联系人列表视图)
【发布时间】:2013-06-06 18:52:32
【问题描述】:

我需要在我的列表视图中实现滑动动作事件。

如果我在 lsitview 的每个组件中从左向右滑动,就会发生调用事件。下面是我的代码链接。请提供一些建议。

@SuppressWarnings("unused")
public class CityList extends Activity{
    private static final String SOAP_ACTION = "http://com.kumaran/TestSericve";      
    private static final String METHOD_NAME = "getCityName";      
    private static final String NAMESPACE = "http://kumaran.com";      
    private static final String URL = "http://xxxxxxxxx.com?wsdl";
    ListView lv;
    ArrayList<String> cityName=new ArrayList<String>();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.citylist);
        lv=(ListView)findViewById(R.id.listView1);
        SoapObject soapReq=new SoapObject(NAMESPACE, METHOD_NAME);  
        SoapSerializationEnvelope soapenv= new SoapSerializationEnvelope(SoapEnvelope.VER11);           
        soapenv.setOutputSoapObject(soapReq);           
        HttpTransportSE ht=new HttpTransportSE(URL);
        try
        {
            ht.call(SOAP_ACTION, soapenv);        
            SoapObject result=(SoapObject)soapenv.bodyIn;           
            for(int i=0; i<result.getPropertyCount();i++){
                cityName.add(result.getProperty(i).toString()); 
            }
            lv.setAdapter(new ArrayAdapter<String>(CityList.this,android.R.layout.simple_list_item_1,cityName));
            lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                public void onItemClick(AdapterView<?> arg0, View view,
                        int i, long l) {
                    String cityName=lv.getItemAtPosition(i).toString();
                    Pojo.setCityName(cityName);
                    Intent int1=new Intent(CityList.this,CustomerList.class);
                    startActivity(int1);
                }
            });
        }
        catch(Exception e)
        {
            Log.e("Exception ", e.getMessage());
        }           
    }
}

【问题讨论】:

  • 你试过什么?请避免发布代码链接,最好发布实际代码。如果它太大而不能很好地适应 - 这可能是太大的时期。然后尝试将问题缩小到一个更短的示例中。
  • 我已经尝试过 onItemClick。我需要实现从左到右的滑动/滑动操作,这应该调用呼叫选项来呼叫我单击的相应号码。帖子会很大,我用来放更多代码。如果我得到一个新的答案,我不能并且犹豫一次又一次地向下滚动。我希望粘贴链接不违反我们的论坛规则。对吗???

标签: android android-listview


【解决方案1】:

据我所知,这是一个建议

你想要像上面那样的 listView.. 通过使用 ArrayAdapter 类继承它并在绘制方法中调用 inflate 来简单地膨胀列表视图

使用xitij 回答水平滚动视图,在滚动调用意图期间,意图通过使用putExtra() 方法传递膨胀视图,您可以调用隐式意图或显式,由您决定。

对于 listview inflate,请检查这些 stackoverflows 的问题:

查看 Lars Vogella 的链接:

另一个膨胀listView的链接,接近你的场景但不准确:

也检查这些以膨胀 listView:

【讨论】:

    【解决方案2】:

    试试这个代码

    final GestureDetector gestureDetector = new GestureDetector(
                    new MyGestureDetector());
            View.OnTouchListener gestureListener = new View.OnTouchListener() {
                public boolean onTouch(View v, MotionEvent event) {
                    return gestureDetector.onTouchEvent(event);
                }
            };
            contactList.setOnTouchListener(gestureListener);
    

    在你的活动中创建一个内部类

    class MyGestureDetector extends SimpleOnGestureListener {
    
            private Button image;
    
            @Override
            public boolean onSingleTapUp(MotionEvent e) {
                return false;
            }
    
            @Override
            public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
                    float velocityY) {
    int pos = contactList.pointToPosition((int) e1.getX(),
                        (int) e1.getY());
    
                if (Math.abs(e1.getY() - e2.getY()) > REL_SWIPE_MAX_OFF_PATH) {
                    return false;
                }
                if (e1.getX() - e2.getX() > REL_SWIPE_MIN_DISTANCE
                        && Math.abs(velocityX) > REL_SWIPE_THRESHOLD_VELOCITY) {
    
                    int firstPosition = contactList.getFirstVisiblePosition()
                            - contactList.getHeaderViewsCount(); // This is the same
                                                                    // as child #0
                    int wantedChild = pos - firstPosition;
    
    //Get the phone no from this position in your contact list and try this
    Intent intent = new Intent(Intent.ACTION_CALL);
    intent.setData(Uri.parse("tel:" + phone));
    context.startActivity(intent);
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多