সম্পাদনা পাঠ্য চরিত্রে শনাক্তকারী পরিবর্তন করা হচ্ছে


272

আমার প্রকল্পে আমি একটি আছে EditText। আমি অক্ষরগুলি গণনা করতে চাই এবং এটি একটিতে এ EditTextসংখ্যাটি প্রদর্শন করতে চাই TextView। আমি নিম্নলিখিত কোডটি লিখেছি এবং এটি সূক্ষ্মভাবে কাজ করে। যাইহোক, আমার সমস্যাটি যখন আমি ক্লিক Backspaceকরি তখন এটি গণনা করা হয় তবে আমার সংখ্যাটি হ্রাস করতে হবে। আমি কীভাবে বিবেচনা করতে পারি Backspace?

tv = (TextView)findViewById(R.id.charCounts);
textMessage = (EditText)findViewById(R.id.textMessage);
textMessage.addTextChangedListener(new TextWatcher(){
    public void afterTextChanged(Editable s) {
        i++;
        tv.setText(String.valueOf(i) + " / " + String.valueOf(charCounts));
    }
    public void beforeTextChanged(CharSequence s, int start, int count, int after){}
    public void onTextChanged(CharSequence s, int start, int before, int count){}
}); 

36
দয়া করে অপ্রাসঙ্গিকতাটি ক্ষমা করুন তবে আমি আগ্রহী যে আপনি কীভাবে আপনার প্রশ্ন বিন্যাসে "ব্যাকস্পেস" রেখেছেন? আমি অনুরূপ প্রশ্ন জিজ্ঞাসা করেছি যেখানে কৌশলটি খুব কার্যকর হত।
অ্যালিওপ

59
<kbd> </kbd> ট্যাগগুলির মধ্যে আপনার শব্দটি (এই ক্ষেত্রে ব্যাকস্পেস) রাখুন যেমন: <kbd> ব্যাকস্পেস </ কেবিডি>
হেসাম

2
আপনি যখনই আকর্ষণীয় ফর্ম্যাটিং দেখতে পান ("ব্যাকস্পেস" এর মতো), লেখক এটি কীভাবে করেছেন তা দেখতে আপনি সর্বদা "সম্পাদনা" লিঙ্কটি ক্লিক করতে পারেন। তারপরে আপনার সম্পাদনাটি বাতিল করতে কেবল "বাতিল করুন" ক্লিক করুন।
সুরগাচ

উত্তর:


142

ব্যবহার

s.length()

নিম্নলিখিত একবারে উত্তরগুলির মধ্যে একবারে পরামর্শ দেওয়া হয়েছিল, তবে এটি অত্যন্ত অদক্ষ

textMessage.getText().toString().length()

38

কীভাবে আপনার সম্পাদনা পাঠের চরটি দৈর্ঘ্য পেতে এবং এটি প্রদর্শিত হবে?

লাইন বরাবর কিছু

tv.setText(s.length() + " / " + String.valueOf(charCounts));

6
এটি এর চেয়েও সহজ - আপনি কেবল কল করতে পারেন textMessage.length(), করার দরকার নেই getText().toString()বিকাশকারী.অ্যান্ড্রয়েড.
com/references/android/widget/…

28

আপনার কোডে সামান্য কিছু পরিবর্তন:

TextView tv = (TextView)findViewById(R.id.charCounts);
textMessage = (EditText)findViewById(R.id.textMessage);
textMessage.addTextChangedListener(new TextWatcher(){
    public void afterTextChanged(Editable s) {
        tv.setText(String.valueOf(s.toString().length()));
    }
    public void beforeTextChanged(CharSequence s, int start, int count, int after){}
    public void onTextChanged(CharSequence s, int start, int before, int count){}
}); 

1
এটি লিখিত হিসাবে কাজ করবে না - দৈর্ঘ্য () একটি পূর্ববর্তী ফেরত দেয় এবং সেটটেক্সট একটি স্ট্রিংয়ের প্রত্যাশা করে
মার্টিন লকেট

1
@ মার্টিনলোকট স্ট্রিংকে ইনটে রূপান্তর করতে Integer.toString (int_type) ব্যবহার করুন।
মেহেদী রোস্তামী

6

ভবিষ্যতের দর্শকদের আরও ব্যাখ্যা সহ এটি কিছুটা সাধারণ উত্তর।

পরিবর্তিত শ্রোতার পাঠ্য যুক্ত করুন

আপনি যদি পাঠ্যের দৈর্ঘ্য সন্ধান করতে চান বা পাঠ্য পরিবর্তনের পরে অন্য কিছু করতে চান, আপনি আপনার সম্পাদনা পাঠ্যে একটি পাঠ্য পরিবর্তিত শ্রোতাকে যুক্ত করতে পারেন।

EditText editText = (EditText) findViewById(R.id.testEditText);
editText.addTextChangedListener(new TextWatcher() {

    @Override
    public void beforeTextChanged(CharSequence charSequence, int start, int count, int after) {

    }

    @Override
    public void onTextChanged(CharSequence charSequence, int start, int before, int count)  {

    }

    @Override
    public void afterTextChanged(Editable editable) {

    }
});

শ্রোতা একটি প্রয়োজন TextWatcher, যা তিনটি পদ্ধতির ওভাররাইড করা যেতে প্রয়োজন: beforeTextChanged, onTextChanged, এবং afterTextChanged

চরিত্র গণনা করা

আপনি চরিত্রটি গণনা করতে onTextChangedবা এর beforeTextChangedসাথে পেতে পারেন

charSequence.length()

বা afterTextChangedসাথে

editable.length()

পদ্ধতিগুলির অর্থ

পরামিতিগুলি কিছুটা বিভ্রান্তিকর তাই এখানে কিছুটা অতিরিক্ত ব্যাখ্যা is

beforeTextChanged

beforeTextChanged(CharSequence charSequence, int start, int count, int after)

  • charSequence: মুলতুবি পরিবর্তন হওয়ার আগে এটি পাঠ্য সামগ্রী। আপনার এটি পরিবর্তন করার চেষ্টা করা উচিত নয়।
  • start: এটিই যেখানে নতুন পাঠ্য সন্নিবেশ করা হবে তার সূচি। যদি একটি ব্যাপ্তি নির্বাচিত হয়, তবে এটি ব্যাপ্তির সূচনা সূচক।
  • count: এটি নির্বাচিত পাঠ্যের দৈর্ঘ্য যা প্রতিস্থাপন হতে চলেছে। যদি কিছু না নির্বাচিত হয় তবে countহবে 0
  • after: এটি পাঠ্যের দৈর্ঘ্য .োকাতে হবে।

onTextChanged

onTextChanged(CharSequence charSequence, int start, int before, int count)

  • charSequence: এটি পরিবর্তন করার পরে পাঠ্য সামগ্রী content আপনার এই মানটি এখানে পরিবর্তন করার চেষ্টা করা উচিত নয়। পরিবর্তন করুন editableমধ্যে afterTextChangedযদি করা প্রয়োজন।
  • start: এটি যেখানে নতুন পাঠ্য প্রবেশ করানো হয়েছিল সেই সূচনার সূচক।
  • before: এটি পুরানো মান। এটি পূর্বে নির্বাচিত পাঠ্যের দৈর্ঘ্য যা প্রতিস্থাপন করা হয়েছিল। এই হিসাবে একই মান countমধ্যে beforeTextChanged
  • count: এটি textোকানো পাঠ্যের দৈর্ঘ্য। এই হিসাবে একই মান afterমধ্যে beforeTextChanged

afterTextChanged

afterTextChanged(Editable editable)

পছন্দ করুন onTextChanged, পরিবর্তনটি ইতিমধ্যে পরিবর্তিত হওয়ার পরে এটিকে বলা হয়। তবে, এখন পাঠ্যটি সংশোধন করা যেতে পারে।

  • editable: এটি হ'ল সম্পাদনাযোগ্য পাঠ্য EditText। আপনি যদি এটি পরিবর্তন করেন তবে আপনাকে অসীম লুপে না যাওয়ার জন্য আপনাকে যত্নবান হতে হবে। আরও বিশদ জন্য ডকুমেন্টেশন দেখুন ।

এই উত্তর থেকে পরিপূরক চিত্র

এখানে চিত্র বর্ণনা লিখুন


0

TextWatcher maritalStatusTextWatcher = new TextWatcher () {@Txtxthanged (CharSequence CharSequence, int i, int i1, int i2) এর আগে সার্বজনীন শূন্যতা রক্ষা করুন {

    }

    @Override
    public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
        try {
            if (charSequence.length()==0){
                topMaritalStatus.setVisibility(View.GONE);
            }else{
                topMaritalStatus.setVisibility(View.VISIBLE);
            }
        }catch (Exception e){
            e.printStackTrace();
        }
    }

    @Override
    public void afterTextChanged(Editable editable) {

    }
};
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.