如何在当前包含项目的索引处向RecyclerView
添加项目,并按堆叠顺序保留其下方存在的所有项目?例如,如果我有这个列表:
item = 0,第1项,第2项,......
我想将一个项目插入现有索引但不替换原始值:
item = 0,项目A ,第1项,第2项,......
到目前为止我使用的代码是:
public void addRecyclerObject(int position, Object recyclerObject) {
recyclerObjects.add(position, recyclerObject);
notifyItemInserted(position);
}
但是,当我使用执行上面的代码时,RecyclerView会这样呈现:
item = 0,项目A ,第2项,...
item 1
已完全删除,并替换为其他值。如何在不替换现有值的情况下插入其他项目?有什么建议吗?
答案 0 :(得分:0)
如果您使用package recursiondemo;
import static java.lang.Math.log;
/** This class demonstrates the recursion with calculation of the value log(N!)
* log(N!) = log(N*(N-1).....3*2*1) = log(N) + log (N-1) + ......log(3) + log (2) + log(1)
* @author =
*/
public class logRecursion implements recursionInterface {
//private int localCounter = 0;
public logRecursion(){
}
/**
*
* @param localCounter
* @return
*/
//@Override
public double directCalculation(int localCounter){
double result = 0.0;
int loopCounter = localCounter;
while ( loopCounter >=1) {
result += log(loopCounter);
--loopCounter;
}
return result;
}
public double calculation(int localCounter) throws Exception{
if (localCounter == 1) {
return 0.0;
}
if (localCounter <= 0 ) {
throw new Exception("Factorials are not defined for the input given");
}
try {
return log(localCounter) + calculation(localCounter - 1); // Recursion
}
catch (StackOverflowError e) {
System.err.println("Caught stack Overflow error: " + e.getMessage());
}
return 0.0; // This is an arbitrary return value to avoid compile time error of no return parameter. So this return value is meaning less
}
}
package recursiondemo;
/**
* Driver class
* @author
*/
public class RecursionDemo {
/**
* @param args the command line arguments
* @throws java.lang.Exception
*/
public static void main(String[] args) throws Exception {
// TODO code application logic here
logRecursion test;
test = new logRecursion();
System.out.println("The factorial of log of " + args[0] + " is " + test.calculation(Integer.parseInt(args[0]))); // Recursion
System.out.println("Direct calculation " + test.directCalculation(Integer.parseInt(args[0])) ); // Direct calculation
}
}
初始化List
中的项目,则可以轻松地将其插入现有索引中,并且移动存储在该位置的原始项目而不进行替换。例如:
RecyclerView
正常插入 list.add(1, "String 1")
list.add(2, "String 2")
list.add(2, "String 3")
。 String1
被插入第二个位置。 String2
也会插入第二个位置,将String3
推入第三个位置并更改数据集的其余部分。如果您需要更多帮助,请查看this帖子。告诉我你怎么走。