Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 快速单击“复制到剪贴板”选项_Android_Android Listview - Fatal编程技术网

Android 快速单击“复制到剪贴板”选项

Android 快速单击“复制到剪贴板”选项,android,android-listview,Android,Android Listview,我正在尝试启用“复制到剪贴板”选项。 代码显示了我的MainActivity,它从数据库中获取数据并将其放在listview中 我所需要的只是用户点击一个listview字段,并选择将其文本复制到剪贴板,以便通过sms转发该文本 我搜索了最近所有关于这个的帖子,没有找到合适的解决方案 提前谢谢 public class MainActivity extends AppCompatActivity implements SwipeRefreshLayout.OnRefreshListener {

我正在尝试启用“复制到剪贴板”选项。 代码显示了我的MainActivity,它从数据库中获取数据并将其放在listview中

我所需要的只是用户点击一个listview字段,并选择将其文本复制到剪贴板,以便通过sms转发该文本

我搜索了最近所有关于这个的帖子,没有找到合适的解决方案

提前谢谢

public class MainActivity extends AppCompatActivity implements SwipeRefreshLayout.OnRefreshListener {

        private int mInterval = 5000; 
        private Handler mHandler;
        public static int responeOldLength = 0;
        private String TAG = MainActivity.class.getSimpleName();

        private String URL = "http://................";

        private SwipeRefreshLayout swipeRefreshLayout;
        private ListView listView;
        private SwipeListAdapter adapter;
        private List<Order> orderList;

        // initially offset will be 0, later will be updated while parsing the json
        private int offSet = 0;



        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);



            listView = (ListView) findViewById(R.id.listView);
            //RelativeLayout.LayoutParams layout_description = new RelativeLayout.LayoutParams(50,10);

            //Rl.setLayoutParams(layout_description);

            swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_layout);

            orderList = new ArrayList<>();
            adapter = new SwipeListAdapter(this, orderList);
            listView.setAdapter(adapter);

            swipeRefreshLayout.setOnRefreshListener(this);

            /**
             * Showing Swipe Refresh animation on activity create
             * As animation won't start on onCreate, post runnable is used
             */


            swipeRefreshLayout.post(new Runnable() {
                                        @Override
                                        public void run() {
                                            swipeRefreshLayout.setRefreshing(true);

                                            fetchOrders();
                                        }
                                    }
            );

            mHandler = new Handler();
            startRepeatingTask();
        }


        /**
         * This method is called when swipe refresh is pulled down
         */



    Runnable mStatusChecker = new Runnable() {
        @Override
        public void run() {
            //updateStatus(); //this function can change value of mInterval.
            mHandler.postDelayed(mStatusChecker, mInterval);
        }
    };
        void startRepeatingTask() {
            mStatusChecker.run();
        }

        void stopRepeatingTask() {
            mHandler.removeCallbacks(mStatusChecker);
        }

    //added code start here
    Runnable mAutoRefreshRunnable = new Runnable() {
        @Override
        public void run() {
            fetchOrders();
            mHandler.postDelayed(mAutoRefreshRunnable, 30000);
        }
    };

        @Override
        protected void onResume() {
            super.onResume();
            mHandler.postDelayed(mAutoRefreshRunnable, 30000);
        }

        @Override
        protected void onPause(){
            super.onPause();
            mHandler.removeCallbacks(mAutoRefreshRunnable);
        }
        //added code ends here


        @Override
        public void onRefresh() {
            fetchOrders();
        }

        /**
         * Fetching movies json by making http call
         */
        private void fetchOrders() {

            // showing refresh animation before making http call
            swipeRefreshLayout.setRefreshing(true);

            // appending offset to url
            String url = URL + offSet;

            // Volley's json array request object
            JsonArrayRequest req = new JsonArrayRequest(url,
                    new Response.Listener<JSONArray>() {
                        @Override
                        public void onResponse(JSONArray response) {
                            Log.d(TAG, response.toString());
                            if(response.length() > responeOldLength){
                                adapter.notifyDataSetChanged();
                                Vibrator v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
                                // Vibrate for 700 milliseconds
                                v.vibrate(700);
                                MediaPlayer mp = MediaPlayer.create(getBaseContext(),R.raw.startrek);
                                mp.start();
                            }
                            responeOldLength = response.length();
                            if (response.length() > 0) {

                                // looping through json and adding to order list
                                for (int i = 0; i < response.length(); i++) {
                                    try {
                                        JSONObject orderObj = response.getJSONObject(i);

                                        int rank = orderObj.getInt("rank");
                                        String title = orderObj.getString("title");
                                        Order m = new Order(rank, title);

                                        orderList.add(0, m);

                                        // updating offset value to highest value
                                        if (rank >= offSet) {
                                            offSet = rank;
                                        }

                                    } catch (JSONException e) {
                                        Log.e(TAG, "JSON Parsing error: " + e.getMessage());
                                    }
                                }



                            }

                            // stopping swipe refresh
                            swipeRefreshLayout.setRefreshing(false);

                        }
                    }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    Log.e(TAG, "Server Error: " + error.getMessage());

                    Toast.makeText(getApplicationContext(), "Can't connect to database", Toast.LENGTH_LONG).show();

                    // stopping swipe refresh
                    swipeRefreshLayout.setRefreshing(false);
                }
            });

            // Adding request to request queue
            MyApplication.getInstance().addToRequestQueue(req);
        }
    }
public类MainActivity扩展AppCompatActivity实现SwipeRefreshLayout.OnRefreshListener{
私用int mInterval=5000;
私人经理人;
公共静态int responeOldLength=0;
私有字符串标记=MainActivity.class.getSimpleName();
专用字符串URL=”http://................";
私人SwipeRefreshLayout SwipeRefreshLayout;
私有列表视图列表视图;
专用SwipeListAdapter适配器;
私有列表订单列表;
//初始偏移量为0,稍后在解析json时更新
私有整数偏移=0;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView=(listView)findViewById(R.id.listView);
//RelativeLayout.LayoutParams布局\ U描述=新的RelativeLayout.LayoutParams(50,10);
//Rl.setLayoutParams(布局描述);
swipeRefreshLayout=(swipeRefreshLayout)findViewById(R.id.swipe\u refresh\u layout);
orderList=新的ArrayList();
适配器=新SwipeListAdapter(此为订单列表);
setAdapter(适配器);
swipeRefreshLayout.setOnRefreshListener(此);
/**
*在“创建活动”上显示滑动刷新动画
*由于动画不会在onCreate上启动,因此会使用post runnable
*/
swipeRefreshLayout.post(新的Runnable(){
@凌驾
公开募捐{
swipeRefreshLayout.setRefreshing(true);
fetchOrders();
}
}
);
mHandler=新处理程序();
startRepeatingTask();
}
/**
*下拉滑动刷新时调用此方法
*/
Runnable mStatusChecker=new Runnable(){
@凌驾
公开募捐{
//updateStatus();//此函数可以更改mInterval的值。
mHandler.postDelayed(mStatusChecker,mInterval);
}
};
void startRepeatingTask(){
mStatusChecker.run();
}
void stopRepeatingTask(){
mHandler.removeCallbacks(mStatusChecker);
}
//添加了从这里开始的代码
Runnable mAutoRefreshRunnable=new Runnable(){
@凌驾
公开募捐{
fetchOrders();
mHandler.postDelayed(mAutoRefreshRunnable,30000);
}
};
@凌驾
受保护的void onResume(){
super.onResume();
mHandler.postDelayed(mAutoRefreshRunnable,30000);
}
@凌驾
受保护的void onPause(){
super.onPause();
mHandler.removeCallbacks(mAutoRefreshRunnable);
}
//添加的代码到此结束
@凌驾
公共void onRefresh(){
fetchOrders();
}
/**
*通过http调用获取电影json
*/
私人订单(){
//在进行http调用之前显示刷新动画
swipeRefreshLayout.setRefreshing(true);
//将偏移量追加到url
字符串url=url+偏移量;
//Volley的json数组请求对象
JsonArrayRequest req=新的JsonArrayRequest(url,
新的Response.Listener(){
@凌驾
公共void onResponse(JSONArray响应){
Log.d(TAG,response.toString());
if(response.length()>responeOldLength){
adapter.notifyDataSetChanged();
可控震源v=(可控震源)getSystemService(Context.可控震源_服务);
//振动700毫秒
v、 振动(700);
MediaPlayer mp=MediaPlayer.create(getBaseContext(),R.raw.startrek);
mp.start();
}
responeOldLength=response.length();
if(response.length()>0){
//通过json循环并添加到订单列表
对于(int i=0;i=偏移){
偏移量=秩;
}
}捕获(JSONException e){
Log.e(标记“JSON解析错误:”+e.getMessage());
}
}
ClipboardManager clipboard = (ClipboardManager)getSystemService(CLIPBOARD_SERVICE); 
ClipData clip = ClipData.newPlainText("label", "Text to copy");
clipboard.setPrimaryClip(clip);
import android.widget.TextView;
import android.widget.Toast;
import android.content.ClipData;
import android.content.ClipboardManager;
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
    // Copy text
    ClipboardManager cm = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);
    TextView tv = (TextView)arg1;
    ClipData clip = ClipData.newPlainText("search.tafheem.noor Text Viewer",tv.getText());
    cm.setPrimaryClip(clip);

    Toast.makeText(this, R.string.label_copied, Toast.LENGTH_LONG).show();
}